Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

• можно виджет древовидной структуры QTreeWidget совместно использовать со стеком QStackedWidget, как в предыдущем случае.

Класс стека QStackedWidget рассматривается в главе 6 («Управление компоновкой»).

Динамические диалоговые окна

Динамическими называются диалоговые окна, которые создаются на основе файлов .ui, сделанных в Qt Designer, во время выполнения приложения. Вместо преобразования файла .ui компилятором uic в программу на С++ мы можем загрузить этот файл на этапе выполнения, используя класс 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

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

Встроенные классы виджетов и диалоговых окон

Qt содержит большой набор встроенных виджетов и стандартных диалоговых окон, с помощью которых можно реализовать большинство возможных ситуаций. В данном разделе мы представим изображения экранов почти со всеми из них. Несколько специальных виджетов будет рассматриваться позже: такие виджеты главного окна, как QMenuBar, QToolBar и QStatusBar, обсуждаются в главе 3, а виджеты, связанные с компоновкой элементов (такие, как QSplitter и QScrollArea), рассматриваются в главе 6. Большинство встроенных виджетов и диалоговых окон входят в примеры данной книги. В представленных ниже экранах виджеты используют стиль Plastique.

Рис. 2.16. Виджеты кнопок Qt.

Qt содержит четыре вида кнопок: QPushButton, QToolButton, QCheckBox и QRadioButton. Кнопки QPushButton и QToolButton получили наибольшее распространение и используются для инициации какого-то действия при их нажатии, но они также могут применяться как переключатели (один щелчок нажимает кнопку, другой щелчок отпускает кнопку). Флажок QCheckBox может использоваться для включения и выключения независимых опций, в то время как переключатели (радиокнопки) QRadioButton обычно задают взаимоисключающие возможности.

Рис. 2.17. Виджеты одностраничных контейнеров Qt.

Контейнеры Qt — это виджеты, которые содержат в себе другие виджеты. Фрейм QFrame, кроме того, может использоваться самостоятельно просто для вычерчивания линий, и он наследуется многими другими классами виджетов, включая QToolBox и QLabel.

Рис. 2.18. Виджеты многостраничных контейнеров Qt.

QTabWidget и QToolBox являются многостраничными виджетами. Каждая страница является дочерним виджетом, и страницы нумеруются с нуля.

Виджеты для просмотра списков элементов оптимизированы для работы с большими наборами данных, и в них часто используются полосы прокрутки. Работа полосы прокрутки реализуется классом QAbstractScrollArea, который является базовым для просмотра списков элементов и для других виджетов, обеспечивающих скроллинг.

Qt имеет несколько виджетов, которые предназначены для простого отображения информации. Наиболее важным из них является текстовая метка QLabel, и она может также использоваться для форматированного отображения текста (используя простой синтаксис, подобный HTML) и вывода изображений.

Рис. 2.19. Виджеты для просмотра списков объектов.

Текстовый браузер QTextBrowser представляет собой подкласс поля редактирования, работающий только в режиме чтения и обеспечивающий основные возможности формата HTML, включая списки, таблицы, изображения и гипертекстовые ссылки. Qt Assistant использует браузер QTextBrowser для представления документации пользователю.

  • Читать дальше
  • 1
  • ...
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: