Я новичок в Qt и у меня проблема с окном TabbedDialog, созданным с помощью Qt Designer. У меня есть Dialog dlg, на котором я разместил tabWidget MyTabWidget, содержащий две вкладки Tab1 и Tab2. Я хочу создать отдельные файлы cpp для каждой вкладки и определить функции в соответствующих файлах. проблема, с которой я сталкиваюсь, заключается в том, как получить доступ к виджетам пользовательского интерфейса диалогового окна dlg в этих соответствующих файлах.
Диалоговое окно с вкладками с использованием Qt Designer
Ответы (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.
Вы можете передать указатель табуляции на функцию, которую хотите использовать. Что-то типа:
void Class1::yourFunction1(QWidget *tab1);
void Class2::yourFunction2(QWidget *tab2);
Вы можете получить доступ к этим вкладкам виджетов, например:
ui->tab
если он был создан в QtDesigner.