Используемый средствами разработки Qt подход к построению графического пользовательского интерфейса легко понятен и очень гибок. Среди работающих в Qt программистов наиболее распространен подход, когда сначала создаются все необходимые графические элементы, а затем соответствующим образом настраиваются их свойства. Программисты добавляют виджеты к компоновщикам графических элементов, которые автоматически устанавливают для них нужные размер и положение. Управление работой графического интерфейса осуществляется через взаимодействие виджетов друг с другом посредством применения механизма сигналов и слотов Qt.
Использование справочной документации
Справочная документации по средствам разработки Qt является важным инструментом в руках любого разработчика Qt—программ, поскольку в ней есть все необходимые сведения по любому классу и любой функции Qt. В данной книге используются многие из классов и функций Qt, но далеко не все, и они описываются не во всей полноте. Для более эффективного использования Qt вам необходимо хорошо разбираться в ее справочной документации и следует сделать это как можно скорее.
Эта документация имеется в формате HTML (каталог doc/html в системе Qt), и ее можно просматривать любым веб-браузером. Вы можете также использовать программу Qt Assistant (помощник Qt) — браузер системы помощи в Qt, который обладает мощными средствами поиска и индексирования информации и поэтому быстрее находит нужную информацию и им легче пользоваться, чем веб-браузером. Для запуска Qt Assistant необходимо выбрать функцию Qt by Trolltech v4.x.y | Assistant в меню Start (пуск) системы Windows, задать команду assistant в системе Unix или дважды щелкнуть по Assistant в системе Mac OS X Finder.
Рис. 1.7. Просмотр документации Qt программой Qt Assistant в системе Mac OS X.
Ссылки в разделе «API Reference» (ссылки программного интерфейса) домашней страницы обеспечивают различные пути навигации по классам Qt. На странице «All Classes» (все классы) приводится список всех классов программного интерфейса Qt. На странице «Main Classes» (основные классы) перечисляются только наиболее используемые классы Qt. Например, вы можете просмотреть классы и функции, использованные нами в этой главе.
Следует отметить, что описание наследуемых функций приводится в базовом классе: например, класс QPushButton не имеет описания функции show(), но это описание имеется в родительском классе QWidget. На рис. 1.8 показана взаимосвязь классов, которые использовались в этой главе.
Рис. 1.8. Дерево наследования для классов, используемых в данной главе.
Справочная документация для текущей версии Qt и нескольких более старых версий можно найти в сети Интернет по адресу http://doc.trolltech.com/. На этом сайте также находятся избранные статьи из журнала Qt Quarterly (Ежеквартальное обозрение по средствам разработки Qt); этот журнал предназначается для программистов Qt и распространяется по всем коммерческим лицензиям.
В данной главе представлены ключевые концепции связи сигналов и слотов и компоновки графических элементов. Здесь также начал раскрываться последовательный и полностью объектно—ориентированный подход к конструированию и применению виджетов. Если вы просмотрите документацию Qt, то обнаружите, что в ней применяется единый подход, позволяющий легко понять способы применения новых виджетов; вы также обнаружите, что тщательный подбор в Qt имен функций, параметров, элементов перечислений и т.д. делает удивительно приятным и простым программирование в Qt.
Последующие главы части I построены на фундаменте, заложенном в этой главе; они показывают, как следует создавать приложения с полнофункциональным графическим интерфейсом, содержащим меню, панели инструментов, окна документов, строку состояния и диалоговые окна вместе с соответствующими функциональными средствами по чтению, обработке и записи файлов.
Стили виджетов
Показанные нами ранее экраны были взяты из системы Linux, но приложения Qt будут выглядеть привычно для любой поддерживаемой платформы. Qt имитирует изобразительные средства используемой платформы, а не делает попытки все представить средствами, принятыми в какой-то одной платформе или каким-то одним инструментарием.