Вступление Предисловие Благодарности Краткая история Qt Часть I. Основные возможности средств разработки Qt Глава 1. Первое знакомство «Здравствуй, Qt» Взаимодействие с пользователем Компоновка виджетов Использование справочной документации Стили виджетов Глава 2. Создание диалоговых окон Подклассы QDialog Подробное описание технологии сигналов и слотов Метаобъектная система Qt Быстрое проектирование диалоговых окон Изменяющиеся диалоговые окна Динамические диалоговые окна Встроенные классы виджетов и диалоговых окон Глава 3. Создание главных окон Создание подкласса QMainWindow Создание меню и панелей инструментов Создание и настройка строки состояния Реализация меню File Применение диалоговых окон Сохранение настроек приложения Работа со многими документами Экранные заставки Глава 4. Реализация функциональности приложения Центральный виджет Создание подкласса QTableWidget Хранение данных в объектах типа «элемент» Загрузка и сохранение Реализация меню Edit Реализация других меню Создание подкласса QTableWidgetltem Глава 5. Создание пользовательских виджетов Настройка виджетов Qt Создание подкласса QWidget Интеграция пользовательских виджетов в Qt Designer Двойная буферизация Часть II. Средний уровень Qt—программирования Глава 6. Управление компоновкой Компоновка виджетов на форме Стековая компоновка Разделители Области с прокруткой Прикрепляемые виджеты и панели инструментов Многодокументный интерфейс Глава 7. Обработка событий Переопределение обработчиков событий Установка фильтров событий Обработка событий во время продолжительных процессов Глава 8. Графика 2D и 3D Рисование при помощи QPainter Преобразования рисовальщика Высококачественное воспроизведение изображения при помощи QImage Вывод на печатающее устройство Графические средства OpenGL Глава 9. Технология «drag-and-drop» Обеспечение поддержки технологии «drag-and-drop» Поддержка пользовательских типов переносимых объектов Работа с буфером обмена Глава 10. Классы отображения элементов Применение удобных классов отображения элементов Применение заранее определенных моделей Реализация пользовательских моделей Реализация пользовательских делегатов Глава 11. Классы—контейнеры Последовательные контейнеры Как работает неявное совместное использование данных Ассоциативные контейнеры Обобщенные алгоритмы Строки, массивы байтов и объекты произвольного типа Глава 12. Ввод—вывод Чтение и запись двоичных данных Чтение и запись текста Работа с каталогами Ресурсы, внедренные в исполняемый модуль Связь между процессами Глава 13. Базы данных Соединение с базой данных и выполнение запросов Представление данных в табличной форме Создание форм по технологии «master—detail» Глава 14. Работа с сетью Написание FTP—клиентов Написание НТТР—клиента Написание клиент—серверных приложений на базе TCP Передача и прием дейтаграмм UDP Глава 15. XML Чтение документов XML при помощи интерфейса SAX Чтение документов XML при помощи интерфейса DOM Запись документов XML Глава 16. Обеспечение интерактивной помощи Всплывающие подсказки, комментарии в строке состояния и справки «что это такое?» Использование QTextBrowser в качестве простого браузера системы помощи Использование Qt Assistant для мощной интерактивной системы помощи Часть III. Advanced Qt Глава 17. Интернационализация Работа с Unicode Создание переводимого интерфейса приложения Динамическое переключение языков Перевод приложений Глава 18. Многопоточная обработка Создание потоков Синхронизация потоков Взаимодействие с главным потоком Применение классов Qt во вторичных потоках Глава 19. Создание подключаемых модулей Расширение Qt с помощью подключаемых модулей Как обеспечить в приложении возможность подключения модулей Написание подключаемых к приложению модулей Глава 20. Возможности, зависимые от платформы Применение «родных» программных интерфейсов Применение ActiveX в системе Windows Управление сеансами в системе X11 Глава 21. Программирование встроенных систем Первое знакомство с Qtopia Настройка Qtopia Core Приложение А. Установка Qt Замечание о лицензировании Установка Qt/Windows Установка Qt/Mac Установка Qt/X11 Приложение Б. Введение в С++ для программистов Java и С# Первое знакомство с С++ Основные отличия языков Элементарные типы данных Определения класса Указатели Ссылки Массивы Символьные строки Перечисления Имена, вводимые typedef Преобразование типов Перегрузка операторов Типы значений Глобальные переменные и функции Пространства имен Препроцессор Стандартная библиотека С++ 1 2 3 4 5 6 7 8 9 10
Стили виджетов Показанные нами ранее экраны были взяты из системы Linux, но приложения Qt будут выглядеть привычно для любой поддерживаемой платформы. Qt имитирует изобразительные средства используемой платформы, а не делает попытки все представить средствами, принятыми в какой-то одной платформе или каким-то одним инструментарием.
Рис. 1.9. Различные стили вывода графических элементов.
В Qt/X11 и Qtopia Core по умолчанию используется стиль Plastique, который применяет плавные переходы цветов и подавление помех спектрального наложения для обеспечения современного интерфейса пользователя. Пользователи приложений Qt могут переопределять принятый по умолчанию стиль, используя опцию —style в команде запуска приложения. Например, для запуска приложения Age со стилем Motif в X11 необходимо просто задать команду
./age -style motif
в командной строке.
Рис. 1.10. Зависимые от платформы стили.
В отличие от других, стили систем Windows XP и Mac доступны только на «родных» платформах, поскольку они реализованы на базе присущих только данной платформе механизмов работы.