Глава 1. Инструменты программиста
15
1.1. Microsoft Visual C++ 16
1.2. Intel C++ 17
1.3. Borland C++ 17
1.4. GNU C++ и MinGW 17
1.5. QDevelop 17
1.6. Рекомендации по выбору компилятора 19
Глава 2. "Обычный" C++
21
2.1. Консольная программа на языке C++ 21
2.2. Компиляция и выполнение программы с помощью командной строки Microsoft Visual C++ 23
2.3. Компиляция и выполнение программы с помощью командной строки в системах Linux/FreeBSD/Solaris/HP-UX/Mac OS X 25
2.4. Создание консольного приложения в Microsoft Visual Studio 2005 26
2.5. Шаблоны в C++ 30
Глава 3. Основы Qt 4
35
3.1. Обзор классов библиотеки Qt 4 35
3.2. Компиляция библиотеки Qt 40
3.2.1. Компиляция в системе Microsoft Windows 41
3.2.2. Компиляция в системе Linux/FreeBSD 43
3.3. Простейшее приложение Qt 4 44
3.4. Компиляция приложений Qt 4 из командной строки 45
3.5. Компиляция приложений Qt 4 с помощью интегрированной среды Microsoft Visual Studio 47
3.6. Использование кириллицы 48
3.7. Консольное приложение Qt 52
3.8. Создание новых классов 54
3.9. Правила именования объектов в библиотеке Qt 57
Глава 4. Текстовые надписи
59
4.1. Форматированный текст 60
4.2. Ссылки Интернета 61
4.3. Редактируемая надпись 62
4.4. Надписи с рисунками 63
4.5. Несколько элементов на одной форме 64
4.6. Диалог с текстовым сообщением 66
4.7. Форматирование строк 67
4.8. Ввод текста с клавиатуры 68
Глава 5. Обработка событий
71
5.1. Сигналы и слоты 71
5.2. События 79
5.3. Обработка событий с помощью виртуальных методов 80
5.4. Фильтры для событий 84
5.5. Сопоставление сигналов 88
Глава 6. Кнопки и диалоги
91
6.1. Кнопки нажатия QPushButton 91
6.2. Программная эмуляция нажатия кнопок 97
6.3. Группы переключателей 99
6.4. Группа кнопок QButtonGroup 101
6.5. Кнопки диалогов 103
6.6. Модальные диалоги 104
6.7. Стандартные диалоги 108
6.8. Окно внутри диалога 110
Глава 7. Меню, панели инструментов и строка состояния
113
7.1. Строка состояния 113
7.2. Действия 115
7.3. Меню 115
7.4. Виджеты в строке состояния 116
7.5. Примеры приложений 118
Глава 8. Размещение элементов на форме
127
8.1. "Ручное" размещение элементов формы 127
8.2. Менеджеры размещения 134
Глава 9. Автоматизация создания диалогов, отладка программ и предоставление помощи
139
9.1. Создание диалога с помощью Qt Designer 139
9.2. Использование диалога, созданного в Qt Designer 145
9.3. Отладка программ 150
9.4. Система помощи 153
Глава 10. Работа с данными
159
10.1. Числа и строки 159
10.2. Массивы и списки 160
10.3. Контейнеры и итераторы 163
10.4. Класс QObject 165
10.5. Неявное совместное использование данных 167
10.6. Явное совместное использование данных 170
Глава 11. Каталоги, файлы, потоки ввода-вывода, ресурсы
173
11.1. Чтение и запись текстового файла 173
11.2. Работа с двоичными данными 176
11.3. Каталоги и свойства файлов 180
11.4. Временные файлы 180
11.5. Каталог приложения 181
11.6. Копирование файлов 181
11.7. Хранение ресурсов в программе 183
11.8. Хранение скомпилированных ресурсов в отдельном двоичном файле 184
11.9. Значок приложения 185
11.10. Диалог выбора файла 185
11.11. Сжатие информации 186
Глава 12. Приложения SDI и MDI
189
12.1. Пример приложения SDI: текстовый редактор 189
12.2. Открытие и сохранение файлов 194
12.3. Команды редактирования 201
12.4. Пример приложения MDI 203
12.5. Плавающие окна 211
12.6. Хранение настроек приложения 214
12.7. Разное 219
Глава 13. Графика и печать
221
13.1. Класс QPainter 222
13.2. Пользовательский стиль линий 227
13.3. Форматированный текст и HTML 228
13.4. Отображение форматированного текста 232
13.5. Часы со стрелками 232
13.6. Класс QPixmap 237
13.7. Работа с принтером 239
13.8. Печать на нескольких страницах 250
13.9. Предварительный просмотр перед печатью 252
13.10. Графические сцены 254
Глава 14. Списки, таблицы и деревья
263
14.1. Список QListWidget 263
14.2. Реакция на действия пользователя 264
14.3. Редактирование элементов списка 267
14.4. Таблица QTableWidget 267
14.5. Дерево QTreeWidget 278
Глава 15. Технология "Модель — представление"
287
15.1. Табличная модель и ее представления 287
15.2. Выравнивание элементов списка 299
15.3. Галочки для элементов таблицы 300
15.4. Дерево каталогов и файлов 303
15.5. Иерархическая модель 306
15.6. Дерево групп и таблица элементов 313
15.7. Разное 323
Глава 16. Процессы, потоки, синхронизация
333
16.1. Процессы 333
16.2. Потоки 335
16.3. Реентерабельность и потокобезопасность 336
16.4. Методы синхронизации процессов и потоков 338
16.4.1. Мьютексы 338
16.4.2. Читатели и писатели 341
16.4.3. Семафоры 341
16.4.4. Условие ожидания 342
16.5. Производитель — потребитель 343
16.6. Мультипликация 346
16.7. QtConcurrent: высокоуровневое API для параллельного программирования 350
Глава 17. Работа с базами данных
359
17.1. Компиляция SQL-драйверов 359
17.2. Подключение к базе данных и выполнение SQL-запросов 362
17.3. Работа с таблицами баз данных 374
Глава 18. Модели таблиц баз данных и их представления
381
18.1. Разработка модели и представления таблицы БД 381
18.2. Делегаты для ячеек таблицы 389
18.3. Связывание элементов управления форм с моделью данных 399
18.4. Консоль запросов 408
18.5. Связывание таблиц 420
18.6. Выполнение запросов в отдельных потоках 422
Глава 19. Средства XML
431
19.1. DOM API 432
19.2. SAX API 437
19.3. Класс QStreamReader 440
19.4. Модуль QtXmlPatterns 443
Глава 20. Локальные сети и Интернет
447
20.1. Эхо-сервер в блокирующем режиме 449
20.2. Клиент для эхо-сервера 453
20.3. Асинхронный однопоточный эхо-сервер 456
20.4. Многопоточный эхо-сервер 460
20.5. Работа с протоколом FTP 466
20.6. Отправка электронной почты по протоколу SMTP 467
20.7. Использование модуля WebKit: простой Web-браузер 475
Глава 21. Использование модуля QtScript
479
Глава 22. Технология COM. Интеграция с MS Office. Средства мультимедиа
495
22.1. Импорт и экспорт таблиц MS Excel 495
22.2. Работа со звуком 501
22.3. Анимация 502
22.4. Библиотека Phonon 503
22.5. Воспроизведение видео с помощью Media Player 507
Глава 23. Внешний вид элементов управления
509
23.1. Палитры 509
23.2. Стили 511
Глава 24. Интернационализация приложений
519
24.1. Подготовка исходного текста программы 519
24.2. Подготовка файлов описания проекта и ресурсов 522
24.3. Утилиты lupdate и lrelease 526
24.4. Программа Qt Linguist 526
24.5. Переключение языка во время выполнения программы 528
Глава 25. Использование интерпретатора Python
531
25.1. Зачем это нужно 531
25.2. Основные сведения о языке Python 531
25.3. Встраивание интерпретатора Python в приложения, написанные на C/C++ 534
25.4. Библиотека PythonQt 545
25.5. Библиотека PyQt4 547
Глава 26. Создание библиотек и плагинов для Qt Designer
549
26.1. Создание библиотеки 549
26.2. Статическая компоновка 551
26.3. Динамическая загрузка 553
26.4. Расширение библиотеки виджетов Qt Designer 555
Глава 27. Сравнение библиотеки Qt с другими средствами межплатформенной разработки
565
27.1. Qt и Java 565
27.2. Qt и .NET 566
27.3. Qt и wxWidgets 567
Глава 28. Разное
573
28.1. Борьба с "зависанием" интерфейса пользователя 573
28.2. Перемещение виджетов с помощью мыши 573
28.3. Заголовок окна 575
28.4. Область прокрутки 582
28.5. Сведения о текущей платформе 582
28.6. Бегущая строка 585
28.7. Работа с переменными окружения 587
28.8. Типы MIME 588
28.9. Буфер обмена 589
28.10. Перетаскивание файлов в окно текстового редактора 591
Заключение 595
Приложение. Описание содержимого компакт-диска 597
Список литературы 603
Предметный указатель 605