Предисловие Маттиаса Эттриха |
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 |
|