|
Предисловие Маттиаса Эттриха |
1 |
|
Благодарности |
3 |
|
Предисловие автора |
4 |
|
Структура книги |
5 |
|
Введение |
13 |
Часть I. Основы Qt |
25 |
Глава 1. Обзор иерархии классов Qt |
26 |
|
Первая программа на Qt |
26 |
|
Модули Qt |
27 |
|
Пространство имен Qt |
29 |
|
Модуль QtCore |
29 |
|
Модуль QtGui |
30 |
|
Модуль QtWidgets |
30 |
|
Модули QtQuick и QtQML |
32 |
|
Модуль QtNetwork |
32 |
|
Модули QtXml и QtXmlPatterns |
32 |
|
Модуль QtSql |
32 |
|
Модули QtMultimedia и QtMultimediaWidgets |
32 |
|
Модуль QtSvg |
32 |
|
Дополнительные модули Qt |
32 |
|
Резюме |
33 |
Глава 2. Философия объектной модели |
35 |
|
Механизм сигналов и слотов |
38 |
|
Сигналы |
41 |
|
Слоты |
43 |
|
Соединение объектов |
44 |
|
Разъединение объектов |
49 |
|
Переопределение сигналов |
50 |
|
Организация объектных иерархий |
51 |
|
Метаобъектная информация |
53 |
|
Резюме |
54 |
Глава 3. Работа с Qt |
55 |
|
Интегрированная среда разработки |
55 |
|
Программа Qt Assistant |
55 |
|
Работа с qmake |
55 |
|
Рекомендации для проекта с Qt |
59 |
|
Метаобъектный компилятор MOC |
60 |
|
Компилятор ресурсов RCC |
61 |
|
Структура Qt-проекта |
62 |
|
Методы отладки |
62 |
|
Отладчик GDB (GNU Debugger) |
63 |
|
Прочие методы отладки |
66 |
|
Глобальные определения Qt |
69 |
|
Информация о библиотеке Qt |
71 |
|
Резюме |
72 |
Глава 4. Библиотека контейнеров |
74 |
|
Контейнерные классы |
75 |
|
Итераторы |
76 |
|
Итераторы в стиле Java |
77 |
|
Итераторы в стиле STL |
78 |
|
Ключевое слово foreach |
80 |
|
Последовательные контейнеры |
80 |
|
Вектор QVector< T> |
82 |
|
Массив байтов QByteArray |
83 |
|
Массив битов QBitArray |
83 |
|
Списки QList< T> и QLinkedList< T> |
84 |
|
Стек QStack< T> |
85 |
|
Очередь QQueue< T> |
86 |
|
Ассоциативные контейнеры |
86 |
|
Словари QMap< K,T> и QMultiMap< K,T> |
87 |
|
Хэши QHash< K,T> и QMultiHash< K,T> |
89 |
|
Множество QSet< T> |
90 |
|
Алгоритмы |
91 |
|
Сортировка |
92 |
|
Поиск |
93 |
|
Сравнение |
94 |
|
Заполнение значениями |
94 |
|
Копирование значений элементов |
94 |
|
Подсчет значений |
95 |
|
Строки |
95 |
|
Регулярные выражения |
97 |
|
Произвольный тип QVariant |
100 |
|
Модель общего использования данных |
101 |
|
Резюме |
102 |
Часть II. Элементы управления |
103 |
Глава 5. С чего начинаются элементы управления? |
104 |
|
Класс QWidget |
104 |
|
Размеры и координаты виджета |
107 |
|
Механизм закулисного хранения |
108 |
|
Установка фона виджета |
108 |
|
Изменение указателя мыши |
109 |
|
Стек виджетов |
112 |
|
Рамки |
112 |
|
Виджет видовой прокрутки |
113 |
|
Резюме |
115 |
Глава 6. Управление автоматическим размещением элементов |
116 |
|
Менеджеры компоновки (layout managers) |
116 |
|
Горизонтальное и вертикальное размещение |
118 |
|
Класс QBoxLayout |
118 |
|
Горизонтальное размещение QHBoxLayout |
120 |
|
Вертикальное размещение QVBoxLayout |
121 |
|
Вложенные размещения |
122 |
|
Табличное размещение QGridLayout |
123 |
|
Порядок следования табулятора |
129 |
|
Разделители QSplitter |
129 |
|
Резюме |
130 |
Глава 7. Элементы отображения |
132 |
|
Надписи |
132 |
|
Индикатор выполнения |
136 |
|
Электронный индикатор |
139 |
|
Резюме |
141 |
Глава 8. Кнопки, флажки и переключатели |
142 |
|
С чего начинаются кнопки? Класс QAbstractButton |
142 |
|
Установка текста и изображения |
142 |
|
Взаимодействие с пользователем |
142 |
|
Опрос состояния |
143 |
|
Кнопки |
143 |
|
Флажки |
145 |
|
Переключатели |
147 |
|
Группировка кнопок |
148 |
|
Резюме |
151 |
Глава 9. Элементы настройки |
152 |
|
Класс QAbstractSlider |
152 |
|
Изменение положения |
152 |
|
Установка диапазона |
152 |
|
Установка шага |
153 |
|
Установка и получение значений |
153 |
|
Ползунок |
153 |
|
Полоса прокрутки |
155 |
|
Установщик |
156 |
|
Резюме |
158 |
Глава 10. Элементы ввода |
159 |
|
Однострочное текстовое поле |
159 |
|
Редактор текста |
161 |
|
Запись в файл |
164 |
|
Расцветка синтаксиса (syntax highlighting) |
165 |
|
С чего начинаются виджеты счетчиков? |
171 |
|
Счетчик |
171 |
|
Элемент ввода даты и времени |
172 |
|
Проверка ввода |
173 |
|
Резюме |
175 |
Глава 11. Элементы выбора |
176 |
|
Простой список |
176 |
|
Вставка элементов |
176 |
|
Выбор элементов пользователем |
178 |
|
Изменение элементов пользователем |
178 |
|
Режим пиктограмм |
178 |
|
Сортировка элементов |
179 |
|
Иерархические списки |
180 |
|
Сортировка элементов |
183 |
|
Таблицы |
183 |
|
Выпадающий список |
185 |
|
Вкладки |
186 |
|
Виджет панели инструментов |
187 |
|
Резюме |
188 |
Глава 12. Интервью, или модель-представление |
189 |
|
Концепция |
190 |
|
Модель |
190 |
|
Представление |
192 |
|
Выделение элемента |
193 |
|
Делегат |
195 |
|
Индексы модели |
197 |
|
Иерархические данные |
198 |
|
Роли элементов |
201 |
|
Создание собственных моделей данных |
203 |
|
Промежуточная модель данных (Proxy model) |
211 |
|
Модель элементно-ориентированных классов |
213 |
|
Резюме |
215 |
Глава 13. Цветовая палитра элементов управления |
217 |
|
Резюме |
220 |
Часть III. События и взаимодействие с пользователем |
221 |
Глава 14. События |
222 |
|
Переопределение специализированных методов обработки событий |
224 |
|
События клавиатуры |
225 |
|
Класс QKeyEvent |
225 |
|
Класс QFocusEvent |
227 |
|
Событие обновления контекста рисования. Класс QPaintEvent |
227 |
|
События мыши |
228 |
|
Класс QMouseEvent |
228 |
|
Класс QWheelEvent |
232 |
|
Методы enterEvent() и leaveEvent() |
233 |
|
Событие таймера. Класс QTimerEvent |
233 |
|
События перетаскивания (drag & drop) |
233 |
|
Класс QDragEnterEvent |
233 |
|
Класс QDragLeaveEvent |
233 |
|
Класс QDragMoveEvent |
233 |
|
Класс QDropEvent |
234 |
|
Остальные классы событий |
234 |
|
Класс QChildEvent |
234 |
|
Класс QCloseEvent |
234 |
|
Класс QHideEvent |
234 |
|
Класс QMoveEvent |
234 |
|
Класс QShowEvent |
234 |
|
Класс QResizeEvent |
234 |
|
Реализация собственных классов событий |
236 |
|
Переопределение метода event() |
236 |
|
Мультитач |
239 |
|
Сохранение работоспособности приложения |
244 |
|
Резюме |
244 |
Глава 15. Фильтры событий |
246 |
|
Реализация фильтров событий |
246 |
|
Резюме |
249 |
Глава 16. Искусственное создание событий |
250 |
|
Резюме |
253 |
Часть IV. Графика и звук |
255 |
Глава 17. Введение в компьютерную графику |
256 |
|
Классы геометрии |
256 |
|
Точка |
256 |
|
Двумерный размер |
257 |
|
Прямоугольник |
259 |
|
Прямая линия |
259 |
|
Многоугольник |
260 |
|
Цвет |
260 |
|
Класс QСolor |
260 |
|
Цветовая модель RGB |
261 |
|
Цветовая модель HSV |
262 |
|
Цветовая модель CMYK |
263 |
|
Палитра |
264 |
|
Предопределенные цвета |
265 |
|
Резюме |
266 |
Глава 18. Легенда о короле Артуре и контекст рисования |
267 |
|
Класс QPainter |
268 |
|
Перья и кисти |
270 |
|
Перо |
270 |
|
Кисть |
271 |
|
Градиенты |
272 |
|
Техника сглаживания (Anti-aliasing) |
274 |
|
Рисование |
275 |
|
Рисование точек |
275 |
|
Рисование линий |
275 |
|
Рисование сплошных прямоугольников |
277 |
|
Рисование заполненных фигур |
277 |
|
Запись команд рисования |
281 |
|
Трансформация систем координат |
281 |
|
Перемещение |
282 |
|
Масштабирование |
283 |
|
Поворот |
283 |
|
Скос |
283 |
|
Трансформационные матрицы |
283 |
|
Графическая траектория (painter path) |
284 |
|
Отсечения |
285 |
|
Режим совмещения (composition mode) |
286 |
|
Графические эффекты |
289 |
|
Резюме |
291 |
Глава 19. Растровые изображения |
293 |
|
Форматы графических файлов |
293 |
|
Формат BMP |
293 |
|
Формат GIF |
294 |
|
Формат PNG |
294 |
|
Формат JPEG |
294 |
|
Формат XPM |
294 |
|
Контекстно-независимое представление |
296 |
|
Класс QImage |
296 |
|
Класс QImage как контекст рисования |
303 |
|
Контекстно-зависимое представление |
304 |
|
Класс QPixmap |
305 |
|
Класс QPixmapCache |
306 |
|
Класс QBitmap |
306 |
|
Создание нестандартного окна виджета |
307 |
|
Резюме |
308 |
Глава 20. Работа со шрифтами |
310 |
|
Отображение строки |
312 |
|
Резюме |
315 |
Глава 21. Графическое представление |
316 |
|
Сцена |
317 |
|
Представление |
318 |
|
Элемент |
319 |
|
События |
321 |
|
Виджеты в графическом представлении |
326 |
|
Резюме |
328 |
Глава 22. Анимация |
330 |
|
Класс QMovie |
330 |
|
SVG-графика |
332 |
|
Анимационный движок и машина состояний |
333 |
|
Смягчающие линии |
336 |
|
Машина состояний и переходы |
341 |
|
Резюме |
343 |
Глава 23. Работа с OpenGL |
345 |
|
Основные положения OpenGL |
345 |
|
Реализация OpenGL-программы |
347 |
|
Разворачивание OpenGL-программ во весь экран |
350 |
|
Графические примитивы OpenGL |
350 |
|
Трехмерная графика |
354 |
|
Резюме |
358 |
Глава 24. Вывод на печать |
359 |
|
Класс QPrinter |
359 |
|
Резюме |
364 |
Глава 25. Разработка собственных элементов управления |
365 |
|
Примеры создания виджетов |
365 |
|
Резюме |
370 |
Глава 26. Элементы со стилем |
371 |
|
Встроенные стили |
373 |
|
Создание собственных стилей |
377 |
|
Метод рисования простых элементов управления |
378 |
|
Метод рисования элементов управления |
378 |
|
Метод рисования составных элементов управления |
378 |
|
Реализация стиля простого элемента управления |
379 |
|
Использование каскадных стилей документа |
382 |
|
Основные положения |
383 |
|
Изменение подэлементов |
385 |
|
Управление состояниями |
386 |
|
Пример |
387 |
|
Резюме |
391 |
Глава 27. Мультимедиа |
392 |
|
Звук |
392 |
|
Воспроизведение WAV-файлов: класс QSound |
393 |
|
Более продвинутые возможности воспроизведения звуковых файлов: класс QMediaPlayer |
394 |
|
Видео и класс QMediaPlayer |
401 |
|
Резюме |
403 |
Часть V. Создание приложений |
405 |
Глава 28. Сохранение настроек приложения |
406 |
|
Резюме |
413 |
Глава 29. Буфер обмена и перетаскивание |
414 |
|
Буфер обмена |
414 |
|
Перетаскивание |
415 |
|
Реализация drag |
417 |
|
Реализация drop |
419 |
|
Создание собственных типов перетаскивания |
421 |
|
Резюме |
426 |
Глава 30. Интернационализация приложения |
428 |
|
Подготовка приложения к интернационализации |
428 |
|
Утилита lupdate |
430 |
|
Программа Qt Linguist |
431 |
|
Утилита lrelease. Пример программы, использующей перевод |
433 |
|
Смена перевода в процессе работы программы |
435 |
|
Завершающие размышления |
437 |
|
Резюме |
438 |
Глава 31. Создание меню |
439 |
|
«Анатомия» меню |
439 |
|
Контекстные меню |
443 |
|
Резюме |
444 |
Глава 32. Диалоговые окна |
445 |
|
Правила создания диалоговых окон |
445 |
|
Класс QDialog |
446 |
|
Модальные диалоговые окна |
446 |
|
Немодальные диалоговые окна |
447 |
|
Создание собственного диалогового окна |
447 |
|
Стандартные диалоговые окна |
451 |
|
Диалоговое окно выбора файлов |
451 |
|
Диалоговое окно настройки принтера |
454 |
|
Диалоговое окно выбора цвета |
455 |
|
Диалоговое окно выбора шрифта |
457 |
|
Диалоговое окно ввода |
458 |
|
Диалоговое окно процесса |
459 |
|
Диалоговые окна мастера |
460 |
|
Диалоговые окна сообщений |
462 |
|
Окно информационного сообщения |
464 |
|
Окно предупреждающего сообщения |
464 |
|
Окно критического сообщения |
465 |
|
Окно сообщения о программе |
466 |
|
Окно сообщения About Qt |
466 |
|
Окно сообщения об ошибке |
467 |
|
Резюме |
467 |
Глава 33. Предоставление помощи |
469 |
|
Всплывающая подсказка |
469 |
|
Система помощи (Online Help) |
471 |
|
Резюме |
473 |
Глава 34. Главное окно, создание SDI- и MDI-приложений |
475 |
|
Класс главного окна QMainWindow |
475 |
|
Класс действия QAction |
476 |
|
Панель инструментов |
477 |
|
Доки |
479 |
|
Строка состояния |
480 |
|
Окно заставки |
482 |
|
SDI- и MDI-приложения |
484 |
|
SDI-приложение |
484 |
|
MDI-приложение |
488 |
|
Резюме |
496 |
Глава 35. Рабочий стол (Desktop) |
497 |
|
Область уведомлений |
497 |
|
Виджет экрана |
502 |
|
Класс сервиса рабочего стола |
506 |
|
Резюме |
506 |
Часть VI. Особые возможности Qt |
507 |
Глава 36. Работа с файлами, каталогами и потоками ввода/вывода |
508 |
|
Ввод/вывод. Класс QIODevice |
508 |
|
Работа с файлами. Класс QFile |
510 |
|
Класс QBuffer |
512 |
|
Класс QTemporaryFile |
512 |
|
Работа с каталогами. Класс QDir |
512 |
|
Просмотр содержимого каталога |
513 |
|
Информация о файлах. Класс QFileInfo |
516 |
|
Файл или каталог? |
516 |
|
Путь и имя файла |
517 |
|
Информация о дате и времени |
517 |
|
Получение атрибутов файла |
517 |
|
Определение размера файла |
517 |
|
Наблюдение за файлами и каталогами |
518 |
|
Потоки ввода/вывода |
520 |
|
Класс QTextStream |
521 |
|
Класс QDataStream |
522 |
|
Резюме |
523 |
Глава 37. Дата, время и таймер |
524 |
|
Дата и время |
524 |
|
Класс даты QDate |
524 |
|
Класс времени QTime |
526 |
|
Класс даты и времени QDateTime |
527 |
|
Таймер |
527 |
|
Событие таймера |
528 |
|
Класс QTimer |
530 |
|
Класс QBasicTimer |
532 |
|
Резюме |
532 |
Глава 38. Процессы и потоки |
533 |
|
Процессы |
533 |
|
Потоки |
536 |
|
Приоритеты |
538 |
|
Обмен сообщениями |
539 |
|
Сигнально-слотовые соединения |
540 |
|
Отправка событий |
544 |
|
Синхронизация |
547 |
|
Мьютексы |
547 |
|
Семафоры |
549 |
|
Ожидание условий |
550 |
|
Блокировка чтения/записи |
550 |
|
Возникновение тупиковых ситуаций |
551 |
|
Фреймворк QtConcurrent |
551 |
|
Резюме |
553 |
Глава 39. Программирование поддержки сети |
555 |
|
Сокетное соединение |
555 |
|
Модель «клиент-сервер» |
556 |
|
Реализация TCP-сервера |
557 |
|
Реализация TCP-клиента |
562 |
|
Реализация UDP-сервера и UDP-клиента |
566 |
|
Управление доступом к сети |
570 |
|
Блокирующий подход |
577 |
|
Режим прокси |
580 |
|
Информация о хосте |
580 |
|
Есть ли соединение с Интернетом? |
581 |
|
Резюме |
581 |
Глава 40. Работа с XML |
582 |
|
Основные понятия и структура XML-документа |
582 |
|
XML и Qt |
584 |
|
Работа с DOM |
584 |
|
Чтение XML-документа |
585 |
|
Создание и запись XML-документа |
587 |
|
Работа с SAX |
589 |
|
Чтение XML-документа |
589 |
|
Класс QXmlStreamReader для чтения XML |
592 |
|
Использование XQuery |
594 |
|
Резюме |
597 |
Глава 41. Программирование баз данных |
599 |
|
Основные положения SQL |
599 |
|
Создание таблицы |
600 |
|
Операция вставки |
600 |
|
Чтение данных |
600 |
|
Изменение данных |
601 |
|
Удаление |
601 |
|
Использование языка SQL в библиотеке Qt |
601 |
|
Соединение с базой данных (второй уровень) |
603 |
|
Исполнение команд SQL (второй уровень) |
604 |
|
Классы SQL-моделей для интервью (третий уровень) |
607 |
|
Модель запроса |
607 |
|
Табличная модель |
608 |
|
Реляционная модель |
610 |
|
Резюме |
611 |
Глава 42. Динамические библиотеки и система расширений |
613 |
|
Динамические библиотеки |
613 |
|
Динамическая загрузка и выгрузка библиотеки |
614 |
|
Расширения (plug-ins) |
617 |
|
Расширения для Qt |
617 |
|
Поддержка собственных расширений в приложениях |
619 |
|
Создание расширения для приложения |
623 |
|
Резюме |
625 |
Глава 43. Совместное использование Qt с платформозависимыми API |
627 |
|
Совместное использование с Windows API |
629 |
|
Совместное использование с Linux |
632 |
|
Совместное использование с Mac OS X |
632 |
|
Системная информация |
637 |
|
Резюме |
639 |
Глава 44. Qt Designer. Быстрая разработка прототипов |
640 |
|
Создание новой формы в Qt Designer |
640 |
|
Добавление виджетов |
643 |
|
Компоновка (layout) |
644 |
|
Порядок следования табулятора |
645 |
|
Сигналы и слоты |
646 |
|
Использование в формах собственных виджетов |
648 |
|
Использование форм в проектах |
648 |
|
Компиляция |
651 |
|
Динамическая загрузка формы |
651 |
|
Резюме |
654 |
Глава 45. Проведение тестов |
655 |
|
Создание тестов |
656 |
|
Тесты с передачей данных |
659 |
|
Создание тестов графического интерфейса |
661 |
|
Параметры для запуска тестов |
663 |
|
Резюме |
664 |
Глава 46. Qt WebEngine |
665 |
|
А зачем? |
666 |
|
Быстрый старт |
667 |
|
Создание простого веб-браузера |
669 |
|
Ввод адресов |
669 |
|
Управление историей |
669 |
|
Загрузка страниц и ресурсов |
670 |
|
Пишем веб-браузер: попытка номер два |
670 |
|
Резюме |
674 |
Глава 47. Интегрированная среда разработки Qt Creator |
675 |
|
Первый запуск |
676 |
|
Создаем проект «Hello Qt Creator» |
677 |
|
Пользовательский интерфейс Qt Creator |
681 |
|
Окна вывода |
682 |
|
Окно проектного обозревателя |
682 |
|
Секция компилирования и запуска |
682 |
|
Редактирование текста |
685 |
|
Как подсвечен ваш синтаксис? |
685 |
|
Скрытие и отображение кода |
686 |
|
Автоматическое дополнение кода |
686 |
|
Поиск и замена |
687 |
|
Комбинации клавиш для ускорения работы |
691 |
|
Вертикальное выделение текста |
691 |
|
Автоматическое форматирование текста |
691 |
|
Комментирование блоков |
692 |
|
Просмотр кода методов класса, их определений и атрибутов |
692 |
|
Помощь, которая всегда рядом |
693 |
|
Интерактивный отладчик и программный экзорцизм |
694 |
|
Синтаксические ошибки |
695 |
|
Ошибки компоновки |
696 |
|
Ошибки времени исполнения |
696 |
|
Логические ошибки |
697 |
|
Трассировка |
697 |
|
Команда Step Over |
698 |
|
Команда Step Into |
698 |
|
Команда Step Out |
699 |
|
Контрольные точки |
699 |
|
Окно переменных (Local and Watches) |
700 |
|
Окно цепочки вызовов (Call Stack) |
701 |
|
Резюме |
701 |
Глава 48. Рекомендации по миграции программ из Qt 4 в Qt 5 |
703 |
|
Основные отличия Qt 5 от Qt 4 |
703 |
|
Подробности перевода на Qt 5 |
703 |
|
Виджеты |
704 |
|
Контейнерные классы |
704 |
|
Функция qFindChildren< T>() |
705 |
|
Сетевые классы |
705 |
|
WebKit |
705 |
|
Платформозависимый код |
705 |
|
Система расширений Plug-ins |
705 |
|
Принтер QPrinter |
706 |
|
Мультимедиа |
706 |
|
Модульное тестирование |
706 |
|
Реализация обратной совместимости Qt 5 с Qt 4 |
706 |
|
Резюме |
709 |
Часть VII. Язык сценариев JavaScript |
711 |
Глава 49. Основы поддержки сценариев JavaScript |
712 |
|
Принцип взаимодействия с языком сценариев |
713 |
|
Первый шаг использования сценария |
716 |
|
Привет, сценарий |
717 |
|
Резюме |
718 |
Глава 50. Синтаксис языка сценариев |
720 |
|
Зарезервированные ключевые слова |
720 |
|
Комментарии |
721 |
|
Переменные |
721 |
|
Предопределенные типы данных |
722 |
|
Целый тип |
722 |
|
Вещественный тип |
722 |
|
Строковый тип |
723 |
|
Логический тип |
723 |
|
Преобразование типов |
723 |
|
Операции |
725 |
|
Операторы присваивания |
725 |
|
Арифметические операции |
725 |
|
Поразрядные операции |
726 |
|
Операции сравнения |
726 |
|
Приоритет выполнения операций |
727 |
|
Управляющие структуры |
728 |
|
Условные операторы |
728 |
|
Оператор if ... else |
728 |
|
Оператор switch |
729 |
|
Оператор условного выражения |
730 |
|
Циклы |
730 |
|
Операторы break и continue |
730 |
|
Цикл for |
730 |
|
Цикл while |
731 |
|
Цикл do...while |
731 |
|
Оператор with |
732 |
|
Исключительные ситуации |
732 |
|
Оператор try...catch |
732 |
|
Оператор throw |
733 |
|
Функции |
733 |
|
Встроенные функции |
735 |
|
Объектная ориентация |
735 |
|
Статические классы |
738 |
|
Наследование |
738 |
|
Перегрузка методов |
741 |
|
Сказание о «джейсоне» |
742 |
|
Резюме |
743 |
Глава 51. Встроенные объекты JavaScript |
744 |
|
Объект Global |
744 |
|
Объект Number |
744 |
|
Объект Boolean |
744 |
|
Объект String |
745 |
|
Замена |
745 |
|
Получение символов |
745 |
|
Получение подстроки |
745 |
|
Объект RegExp |
745 |
|
Проверка строки |
746 |
|
Поиск позиции совпадений |
746 |
|
Найденное совпадение |
746 |
|
Объект Array |
746 |
|
Дополнение массива элементами |
747 |
|
Адресация элементов |
747 |
|
Изменение порядка элементов массива |
747 |
|
Преобразование массива в строку |
748 |
|
Объединение массивов |
748 |
|
Упорядочивание элементов |
748 |
|
Многомерные массивы |
748 |
|
Объект Date |
749 |
|
Объект Маth |
750 |
|
Модуль числа |
750 |
|
Округление |
751 |
|
Определение максимума и минимума |
751 |
|
Возведение в степень |
751 |
|
Вычисление квадратного корня |
751 |
|
Генератор случайных чисел |
752 |
|
Тригонометрические методы |
752 |
|
Вычисление натурального логарифма |
752 |
|
Объект Function |
753 |
|
Резюме |
753 |
Глава 52. Классы поддержки JavaScript и практические примеры |
754 |
|
Класс QJSValue |
754 |
|
Класс QJSEngine |
754 |
|
Практические примеры |
755 |
|
«Черепашья» графика |
755 |
|
Сигналы, слоты и функции |
762 |
|
Полезные дополнительные функции |
765 |
|
Резюме |
769 |
Часть VIII. Технология Qt Quick |
771 |
Глава 53. Знакомство с Qt Quick |
772 |
|
А зачем? |
772 |
|
Введение в QML |
774 |
|
Быстрый старт |
776 |
|
Использование JavaScript в QML |
782 |
|
Резюме |
783 |
Глава 54. Элементы |
785 |
|
Визуальные элементы |
785 |
|
Свойства элементов |
788 |
|
Собственные свойства |
790 |
|
Создание собственных элементов |
793 |
|
Создание собственных модулей |
795 |
|
Динамическое создание элементов |
795 |
|
Элемент Flickable |
796 |
|
Готовые элементы пользовательского интерфейса |
797 |
|
Диалоговые окна |
802 |
|
Резюме |
805 |
Глава 55. Управление размещением элементов |
806 |
|
Фиксаторы |
806 |
|
Традиционные размещения |
813 |
|
Размещение в виде потока |
817 |
|
Резюме |
819 |
Глава 56. Элементы графики |
820 |
|
Цвета |
820 |
|
Растровые изображения |
821 |
|
Элемент Image |
821 |
|
Элемент BorderImage |
825 |
|
Градиенты |
826 |
|
Шрифты |
828 |
|
Рисование на элементах холста |
828 |
|
Шейдеры и эффекты |
833 |
|
Резюме |
837 |
Глава 57. Пользовательский ввод |
838 |
|
Область мыши |
838 |
|
Сигналы |
841 |
|
Ввод с клавиатуры |
845 |
|
Фокус |
846 |
|
«Сырой» ввод |
848 |
|
Мультитач |
850 |
|
Резюме |
852 |
Глава 58. Анимация |
853 |
|
Анимация при изменении свойств |
853 |
|
Анимация для изменения числовых значений |
855 |
|
Анимация с изменением цвета |
856 |
|
Анимация с поворотом |
857 |
|
Анимации поведения |
858 |
|
Параллельные и последовательные анимации |
860 |
|
Состояния и переходы |
863 |
|
Состояния |
863 |
|
Переходы |
866 |
|
Модуль частиц |
868 |
|
Резюме |
872 |
Глава 59. Модель/Представление |
873 |
|
Модели |
873 |
|
Модель списка |
873 |
|
XML-модель |
874 |
|
JSON-модель |
876 |
|
Представление данных моделей |
877 |
|
Элемент ListView |
877 |
|
Элемент GridView |
880 |
|
Элемент PathView |
882 |
|
Визуальная модель данных |
884 |
|
Резюме |
886 |
Глава 60. Qt Quick и C++ |
888 |
|
Использование языка QML в C++ |
888 |
|
Взаимодействие из C++ со свойствами QML-элементов и вызов их функций |
889 |
|
Соединение QML-сигналов со слотами C++ |
891 |
|
Использование компонентов языка C++ в QML |
894 |
|
Экспорт объектов и виджетов из C++ в QML |
895 |
|
Использование зарегистрированных объектов C++, их свойств и методов в QML |
897 |
|
Реализация визуальных элементов QML на C++ |
901 |
|
Класс QQuickImageProvider |
904 |
|
Резюме |
909 |
Глава 61. 3D-графика Qt 3D |
910 |
|
Основы |
910 |
|
Cвет |
911 |
|
Камера |
912 |
|
3D-объекты |
913 |
|
Материалы |
916 |
|
Трансформация |
919 |
|
Анимация |
921 |
|
Qt 3D Studio |
923 |
|
Резюме |
924 |
Часть IX. Мобильные приложения и Qt |
927 |
Глава 62. Введение в мир мобильных приложений |
928 |
|
Смартфоны меняют все |
928 |
|
Виртуальные магазины приложений |
930 |
|
Распространение приложений вне виртуального магазина |
932 |
|
Qt и разработка мобильных приложений |
932 |
|
Резюме |
934 |
Глава 63. Подготовка к работе над мобильными приложениями |
935 |
|
Подготовка среды для разработки iOS-приложений |
935 |
|
Подготовка среды для разработки Android приложений |
938 |
|
Запуск приложений на реальном устройстве |
945 |
|
Резюме |
946 |
Глава 64. Особенности разработки приложений для мобильных устройств |
948 |
|
Анатомия файлов свойств для iOS- и Android-приложений |
949 |
|
Файл свойств iOS-приложений |
949 |
|
Файл свойств Android-приложений |
951 |
|
Полноэкранный режим |
955 |
|
iOS-реализация |
956 |
|
Android-реализация |
956 |
|
Автоматический поворот |
956 |
|
Конфигурирование приложений для поддержки поворота |
957 |
|
iOS-реализация |
957 |
|
Android-реализация |
958 |
|
Обработка поворота в приложениях |
958 |
|
Сенсоры |
960 |
|
Пользовательский ввод при помощи пальцев |
964 |
|
Положение рук |
967 |
|
Резюме |
967 |
Глава 65. Пример разработки мобильного приложения |
969 |
|
Обдумывание и планирование приложения |
969 |
|
Название приложения |
970 |
|
Значок приложения |
970 |
|
Что будет в первой версии? |
971 |
|
Пишем код |
973 |
|
Добавление к приложению значков и стартовых экранов |
980 |
|
iOS-реализация |
980 |
|
Android-реализация |
982 |
|
Резюме |
983 |
Глава 66. Публикация в магазине мобильных приложений |
984 |
|
Этапы работы для App Store |
984 |
|
Регистрация |
984 |
|
Настройки для запуска приложений на реальных устройствах |
985 |
|
Создание электронной подписи |
991 |
|
Создание страницы приложения |
992 |
|
Загрузка и публикация приложения |
998 |
|
Этапы работы для Google Play |
1000 |
|
Регистрация |
1001 |
|
Создание страницы приложения |
1001 |
|
Создание электронной подписи |
1005 |
|
Загрузка и публикация приложения |
1007 |
|
Резюме |
1009 |
|
  |
  |
|
Приложения |
1011 |
|
Приложение 1. Настройка среды для работы над Qt-приложениями |
1012 |
|
Настройка среды для Mac OS X |
1012 |
|
Настройка среды для Windows |
1013 |
|
Настройка среды для Ubuntu Linux |
1015 |
|
Приложение 2. Таблица простых чисел |
1018 |
|
Приложение 3. Таблицы семибитной кодировки ASCII |
1021 |
|
Приложение 4. Описание архива с примерами |
1024 |
|
Предметный указатель |
1034 |
|
|