QT 4: программирование GUI на С++ | страница 37
Класс стека QStackedWidget рассматривается в главе 6 («Управление компоновкой»).
Динамические диалоговые окна
Динамическими называются диалоговые окна, которые создаются на основе файлов .ui, сделанных в Qt Designer, во время выполнения приложения. Вместо преобразования файла .ui компилятором uic в программу на С++ мы можем загрузить этот файл на этапе выполнения, используя класс QUiLoader:
>QUiLoader uiLoader;
>QFile file("sortdialog.ui");
>QWidget *sortDialog = uiLoader.load(&file);
>if (sortDialog) {
> …
>}
Мы можем осуществлять доступ к дочерним виджетам формы при помощи функции QObject::findChild
>QComboBox *primaryColumnCombo =
> sortDialog->findChild
>if (primaryColumnCombo) {
> …
>}
Функция findChild
Класс QUiLoader расположен в отдельной библиотеке. Для использования класса QUiLoader в приложении Qt мы должны добавить в файл .pro следующую строку:
>CONFIG += uitools
Динамические диалоговые окна позволяют изменять компоновку элементов формы без повторной компиляции приложения. Они могут также использоваться для создания «тонких» клиентских приложений, когда в исполняемый модуль встраивается только основная форма пользовательского интерфейса, а все другие формы создаются по мере необходимости.
Встроенные классы виджетов и диалоговых окон
Qt содержит большой набор встроенных виджетов и стандартных диалоговых окон, с помощью которых можно реализовать большинство возможных ситуаций. В данном разделе мы представим изображения экранов почти со всеми из них. Несколько специальных виджетов будет рассматриваться позже: такие виджеты главного окна, как QMenuBar, QToolBar и QStatusBar, обсуждаются в главе 3, а виджеты, связанные с компоновкой элементов (такие, как QSplitter и QScrollArea), рассматриваются в главе 6. Большинство встроенных виджетов и диалоговых окон входят в примеры данной книги. В представленных ниже экранах виджеты используют стиль Plastique.
Рис. 2.16. Виджеты кнопок Qt.
Qt содержит четыре вида кнопок: QPushButton, QToolButton, QCheckBox и QRadioButton. Кнопки QPushButton