Qt 5.10. Профессиональное программирование на C++ Год издания: 2018 Автор: Шлее М. Жанр или тематика: Программирование, языки, библиотеки -> Qt Издательство: БХВ-Петербург ISBN: 978-5-9775-3678-3 Серия: В подлиннике Язык: Русский Формат: PDF Качество: Отсканированные страницы + слой распознанного текста Интерактивное оглавление: Нет Количество страниц: 1072 Описание: Книга посвящена разработке приложений для Windows, Mac OS X, Linux, Android и iOS с использованием библиотеки Qt версии 5.10. Подробно рассмотрены возможности, предоставляемые этой библиотекой, и описаны особенности, выгодно отличающие ее от других библиотек. Описана интегрированная среда разработки Qt Creator и работа с технологией Qt Quick. Книга содержит исчерпывающую информацию о классах Qt 5, и так же даны практические рекомендации их применения, проиллюстрированные на большом количестве подробно прокомментированных примеров. Проекты примеров из книги размещены на сайте издательства (ftp://ftp.bhv.ru/9785977536783.zip).
Примеры страниц
Оглавление
Предисловие Маттиаса Эттриха 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
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum