2.5. Динамические диалоги.

Динамическими называются такие диалоги, которые создаются на основе .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.