Диалоговое окно с вкладками с использованием Qt Designer

Я новичок в Qt и у меня проблема с окном TabbedDialog, созданным с помощью Qt Designer. У меня есть Dialog dlg, на котором я разместил tabWidget MyTabWidget, содержащий две вкладки Tab1 и Tab2. Я хочу создать отдельные файлы cpp для каждой вкладки и определить функции в соответствующих файлах. проблема, с которой я сталкиваюсь, заключается в том, как получить доступ к виджетам пользовательского интерфейса диалогового окна dlg в этих соответствующих файлах.


person user3154532    schedule 02.01.2014    source источник


Ответы (2)


Здесь необходимо выполнить несколько шагов, которые хорошо описаны в следующая документация.

1) Включить #include "ui_foo.h"

Это необходимо для доступа к элементам пользовательского интерфейса в вашем коде. Это файл, который доступен через компилятор QtDesigner и пользовательского интерфейса, он же. уик процесс.

2) Либо наследуйте Ui::Foo, либо используйте объект с композицией в своем классе. Это будет что-то вроде:

class Foo : public QWidget
{
    Q_OBJECT

public:
    Foo(QWidget *parent = 0);

private:
    Ui::Foo ui;
};

or

class Foo : public QWidget, private Ui::Foo
{
    Q_OBJECT

public:
    Foo(QWidget *parent = 0);
};

3) Затем вы можете использовать этот экземпляр для доступа к виджетам (что-то вроде ui->foo), созданным приложением QtDesigner.

bool Foo::doStuff()
{
    ui->foo()->doStuff();
}

Вы, вероятно, не хотите иметь два отдельных исходных файла и класса, как вы написали, но если вы хотите, описанные выше шаги могут быть применены к обоим.

При этом я думаю, что будет лучше, если вы просмотрите вышеупомянутую документацию, потому что она намного более подробно описывает несколько подходов и то, как получить доступ к компонентам пользовательского интерфейса в вашем исходном коде, сгенерированном QtDesigner.

person lpapp    schedule 02.01.2014

Вы можете передать указатель табуляции на функцию, которую хотите использовать. Что-то типа:

void Class1::yourFunction1(QWidget *tab1);
void Class2::yourFunction2(QWidget *tab2);

Вы можете получить доступ к этим вкладкам виджетов, например:

ui->tab 

если он был создан в QtDesigner.

person Maxim Makhun    schedule 02.01.2014