Шаг 163.
Библиотека Qt.
Динамические диалоговые окна

    На этом шаге рассмотрим создание динамических диалоговых окон.

    Динамическими называются диалоговые окна, которые создаются на основе файлов .ui, сделанных в Qt Designer, во время выполнения приложения. Вместо преобразования файла .ui компилятором uic в программу на C++ мы можем загрузить этот файл на этапе выполнения, используя класс QUiLoader:

QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
    ....
}

    Мы можем осуществлять доступ к дочерним виджетам формы при помощи функции QObject::findChild<T>():

QComboBox *primaryColumnCombo =
           sortDialog->findChild<QComboBox *>("primaryColumnCombo");
if (primaryColumnCombo) {
}

    Функция findChild<T>() является шаблонной функцией-членом, которая возвращает дочерний объект по заданному имени и типу. Эта функция отсутствует для MSVC 6 из-за ограничений этого компилятора. Если вам необходимо использовать компилятор MSVC 6, вместо этой функции следует вызывать глобальную функцию qFindChild<T>(), которая работает в основном так же.

    Класс QUiLoader расположен в отдельной библиотеке. Для использования класса QUiLoader в приложении Qt мы должны добавить в файл .pro следующую строку:

CONFIG += uitools

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

    На следующем шаге начнем рассматривать создание главных окон.




Предыдущий шаг Содержание Следующий шаг