Динамическими называются такие диалоги, которые создаются на основе .ui файлов во время работы программы (то бишь "на лету"). В случае с динамическими диалогами, файлы .ui не конвертируются утилитой uic в код C++, а загружаются программой во время исполнения, с помощью класса QWidgetFactory, примерно таким образом:
QDialog *sortDialog = (QDialog *)
QWidgetFactory::create("sortdialog.ui");
Доступ к виджетам на форме такого диалога осуществляется вызовом
функции QObject::child():
QComboBox *primaryColumnCombo = (QComboBox *)
sortDialog->child("primaryColumnCombo", "QComboBox");
Эта функция возвращает "пустой" указатель, если на
форме диалога не был найден виджет с заданным именем и типом.Класс QWidgetFactory размещен в отдельной библиотеке. Чтобы иметь возможность работы с классом QWidgetFactory из Qt приложений, необходимо добавить такую строчку в .pro файл:
LIBS += -lqui
Этот синтаксис одинаков для любой платформы, даже при том, что он
определенно имеет отношение к Unix.Динамические диалоги позволяют изменять компоновку формы без необходимости пересборки приложения. Исчерпывающий пример работы с динамическими диалогами вы найдете в главе "Subclassing and Dynamic Dialogs" справочного руководства к Qt Designer.
Пред. | В начало | След. |
Диалоги с изменяющимся внешним видом. | На уровень выше | Встроенные виджеты и классы диалогов. |