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

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

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 для представления документации пользователю.

Рис. 2.20. Виджеты отображения данных в Qt.

Qt содержит несколько виджетов для ввода данных. Строка редактирования QLineEdit может ограничивать ввод данных, применяя маску ввода или функцию проверки допустимости данных. Поле редактирования QTextEdit является подклассом QAbstractScrollArea, позволяющим редактировать тексты большого объема.

Рис. 2.21. Виджеты ввода данных в Qt.

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

Рис. 2.22. Диалоговое окно выбора цвета и диалоговое окно выбора шрифта в Qt.

В системах Windows и Mac Os X по мере возможности используются «родные» диалоговые окна, а не их общие аналоги.

Рис. 2.23. Диалоговое окно для выбора файла и диалоговое окно печати документов в Qt.

Qt содержит разнообразные диалоговые окна для передачи сообщений об ошибках и других сообщений, причем они обеспечивают обратную связь с пользователем. При выполнении продолжительных операций могут использоваться диалоговый индикатор состояния процесса QProgressDialog и показанный ранее индикатор состояния процесса без обратной связи QProgressBar. Очень удобно пользоваться диалоговым окном QInputDialog, когда пользователю требуется ввести одну строку или одно число.

Рис. 2.24. Диалоговые окна для установки обратной связи с пользователем.

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

В некоторых случаях может возникнуть потребность в создании пользовательского виджета без помощи стандартных средств. В Qt это делается просто, и возможности пользовательских виджетов будут обладать таким же свойством независимости от платформы, как и возможности встроенных виджетов Qt. Пользовательские виджеты даже можно интегрировать в Qt Designer, и тогда они могут применяться так же, как и встроенные виджеты Qt. В главе 5 объясняются способы создания пользовательских виджетов.