"QT 4: программирование GUI на С++" - читать интересную книгу автора (Бланшет Жасмин, Саммерфилд Марк)
Динамические диалоговые окна
Динамическими называются диалоговые окна, которые создаются на основе файлов .ui, сделанных в Qt Designer, во время выполнения приложения. Вместо преобразования файла .ui компилятором uic в программу на С++ мы можем загрузить этот файл на этапе выполнения, используя класс QUiLoader:
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(amp;file);
if (sortDialog) {
…
}
Мы можем осуществлять доступ к дочерним виджетам формы при помощи функции QObject::findChildlt;Tgt;():
Функция findChildlt;Tgt;() является шаблонной функцией—членом, которая возвращает дочерний объект по заданному имени и типу. Эта функция отсутствует для MSVC 6 из-за ограничений этого компилятора. Если вам необходимо использовать компилятор MSVC 6, вместо этой функции следует вызывать глобальную функцию qFindChildlt;Tgt;(), которая работает точно так же.
Класс QUiLoader расположен в отдельной библиотеке. Для использования класса QUiLoader в приложении Qt мы должны добавить в файл .pro следующую строку:
CONFIG += uitools
Динамические диалоговые окна позволяют изменять компоновку элементов формы без повторной компиляции приложения. Они могут также использоваться для создания «тонких» клиентских приложений, когда в исполняемый модуль встраивается только основная форма пользовательского интерфейса, а все другие формы создаются по мере необходимости.