
В нашем издательстве опубликована книга Николая Прохоренка “Qt 6. Разработка оконных приложений на C++“.
Описываются базовые возможности библиотеки Qt, позволяющей создавать приложения с графическим интерфейсом на языке C++. Книга ориентирована на тех, кто уже знаком с языком программирования C++ и хотел бы научиться разрабатывать оконные приложения. Рассматриваются способы обработки событий, управление свойствами окна, создание формы, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Книга содержит большое количество практических примеров, помогающих начать разрабатывать приложения с графическим интерфейсом самостоятельно. Она будет полезна в качестве самоучителя для начинающих разработчиков. Читатели, уже имеющие опыт, могут использовать ее как удобный справочник.
- Управление окном приложения
- Обработка сигналов и событий
- Размещение компонентов внутри окна
- Основные компоненты
- Списки и таблицы
- Работа с графикой и изображениями
- Графическая сцена
- Диалоговые окна
- SDI- и MDI-приложения
- Редактор Qt Creator
От автора
Qt — это популярная библиотека, позволяющая создавать приложения с графическим интерфейсом на языке C++. Она очень проста в использовании и идеально подходит для разработки приложений практически любой сложности. Библиотека является кросс-платформенной, поэтому мы можем создавать оконные приложения под Windows, Linux и Mac, а также мобильные приложения под Android и iOS.
В этой книге мы рассмотрим процесс создания оконных приложений применитель- но к операционной системе Windows. Для сборки приложений будем пользоваться компилятором MinGW, а для набора кода — редактором Qt Creator, входящим в состав библиотеки Qt.
Для полного понимания материала книги от читателя потребуется знание языка C++.
Чтобы уменьшить размер книги, основная часть кода примеров вынесена в отдельные проекты, которые расположены в электронном архиве. Электронный архив можно загрузить с сервера издательства «БХВ-Петербург» по ссылке https://zip.bhv.ru/9785977511803.zip или со страницы книги на сайте www.bhv.ru (см. приложение).
Желаю приятного изучения и надеюсь, что книга поможет вам реализовать как самые простые, так и самые сложные приложения.
-
Нет в наличии
Qt 6. Разработка оконных приложений на C++
1250 ₽
Введение………………………………………………………………………………………………….. 9
Глава 1. Первые шаги……………………………………………………………………………. 11
1.1. Создание структуры каталогов…………………………………………………………………………………………. 12
1.2. Добавление пути в переменную PATH………………………………………………………………………………. 12
1.3. Работа с командной строкой……………………………………………………………………………………………… 14
1.4. Установка Qt 6…………………………………………………………………………………………………………………….. 14
1.5. Настройка редактора Qt Creator……………………………………………………………………………………….. 23
1.6. Первая программа на Qt…………………………………………………………………………………………………….. 27
1.7. Структура программы………………………………………………………………………………………………………… 32
1.8. Запуск приложения двойным щелчком на значке файла………………………………………………… 35
1.9. ООП-стиль создания окна…………………………………………………………………………………………………… 36
1.10. Создание проекта с формой…………………………………………………………………………………………….. 39
1.11. Доступ к документации……………………………………………………………………………………………………. 45
Глава 2. Работа с символами и строками……………………………………………….. 47
2.1. Псевдонимы для элементарных типов………………………………………………………………………………. 47
2.2. Класс QChar: символ в кодировке Unicode………………………………………………………………………. 48
2.2.1. Создание объекта…………………………………………………………………………………………………….. 48
2.2.2. Изменение регистра символа…………………………………………………………………………………… 50
2.2.3. Проверка типа содержимого символа……………………………………………………………………. 51
2.3. Класс QString: строка в кодировке Unicode……………………………………………………………………… 53
2.3.1. Создание объекта…………………………………………………………………………………………………….. 53
2.3.2. Преобразование объекта в другой тип данных…………………………………………………….. 54
2.3.3. Получение и изменение размера строки………………………………………………………………… 55
2.3.4. Доступ к отдельным символам……………………………………………………………………………….. 58
2.3.5. Перебор символов строки………………………………………………………………………………………… 59
2.3.6. Итераторы…………………………………………………………………………………………………………………. 60
2.3.7. Конкатенация строк…………………………………………………………………………………………………. 62
2.3.8. Добавление и вставка символов……………………………………………………………………………… 63
2.3.9. Удаление символов………………………………………………………………………………………………….. 64
2.3.10. Изменение регистра символов………………………………………………………………………………. 68
2.3.11. Получение фрагмента строки……………………………………………………………………………….. 69
2.3.12. Поиск в строке………………………………………………………………………………………………………… 70
2.3.13. Замена в строке………………………………………………………………………………………………………. 73
2.3.14. Сравнение строк…………………………………………………………………………………………………….. 75
2.3.15. Преобразование строки в число……………………………………………………………………………. 77
2.3.16. Преобразование числа в строку……………………………………………………………………………. 79
2.3.17. Форматирование строки………………………………………………………………………………………… 80
2.3.18. Разделение строки на подстроки по разделителю………………………………………………. 81
2.4. Класс QStringList: список строк………………………………………………………………………………………… 83
2.4.1. Создание объекта…………………………………………………………………………………………………….. 83
2.4.2. Вставка элементов……………………………………………………………………………………………………. 84
2.4.3. Определение и изменение количества элементов………………………………………………….. 87
2.4.4. Удаление элементов…………………………………………………………………………………………………. 88
2.4.5. Доступ к элементам………………………………………………………………………………………………….. 91
2.4.6. Итераторы…………………………………………………………………………………………………………………. 93
2.4.7. Перебор элементов…………………………………………………………………………………………………… 95
2.4.8. Сортировка списка…………………………………………………………………………………………………… 95
2.4.9. Получение фрагмента списка………………………………………………………………………………….. 95
2.4.10. Поиск элементов…………………………………………………………………………………………………….. 96
2.4.11. Замена элементов…………………………………………………………………………………………………… 98
2.4.12. Фильтрация списка………………………………………………………………………………………………… 99
2.4.13. Преобразование списка в строку………………………………………………………………………… 100
Глава 3. Управление окном приложения……………………………………………… 101
3.1. Создание и отображение окна…………………………………………………………………………………………. 101
3.2. Указание типа окна…………………………………………………………………………………………………………… 103
3.3. Изменение и получение размеров окна…………………………………………………………………………… 105
3.4. Местоположение окна на экране…………………………………………………………………………………….. 109
3.4.1. Получение информации о размере экрана…………………………………………………………… 110
3.5. Указание координат и размеров……………………………………………………………………………………… 113
3.5.1. Класс QPoint: координаты точки…………………………………………………………………………. 113
3.5.2. Класс QSize: размеры прямоугольной области…………………………………………………… 115
3.5.3. Класс QRect: координаты и размеры прямоугольной области………………………….. 118
3.6. Разворачивание и сворачивание окна…………………………………………………………………………….. 125
3.7. Управление прозрачностью окна……………………………………………………………………………………. 127
3.8. Модальные окна……………………………………………………………………………………………………………….. 128
3.9. Смена значка в заголовке окна………………………………………………………………………………………… 130
3.10. Изменение цвета фона окна……………………………………………………………………………………………. 132
3.11. Использование изображения в качестве фона……………………………………………………………… 134
3.12. Создание окна произвольной формы……………………………………………………………………………. 136
3.13. Всплывающие подсказки……………………………………………………………………………………………….. 137
3.14. Закрытие окна из программы………………………………………………………………………………………… 139
Глава 4. Обработка сигналов и событий………………………………………………. 141
4.1. Назначение обработчиков сигналов………………………………………………………………………………. 141
4.2. Блокировка и удаление обработчика……………………………………………………………………………… 147
4.3. Генерация сигнала из программы…………………………………………………………………………………… 151
4.4. Использование таймеров………………………………………………………………………………………………….. 153
4.5. Класс QTimer: таймер……………………………………………………………………………………………………….. 156
4.6. Перехват всех событий…………………………………………………………………………………………………….. 160
4.7. События окна…………………………………………………………………………………………………………………….. 164
4.7.1. Изменение состояния окна…………………………………………………………………………………….. 164
4.7.2. Изменение положения окна и его размеров…………………………………………………………. 167
4.7.3. Перерисовка окна или его части…………………………………………………………………………… 169
4.7.4. Предотвращение закрытия окна…………………………………………………………………………… 170
4.8. События клавиатуры………………………………………………………………………………………………………… 171
4.8.1. Установка фокуса ввода………………………………………………………………………………………… 172
4.8.2. Назначение клавиш быстрого доступа………………………………………………………………… 177
4.8.3. Нажатие и отпускание клавиши клавиатуры……………………………………………………… 181
4.9. События мыши………………………………………………………………………………………………………………….. 183
4.9.1. Нажатие и отпускание кнопки мыши…………………………………………………………………… 183
4.9.2. Перемещение указателя…………………………………………………………………………………………. 185
4.9.3. Наведение и выведение указателя………………………………………………………………………… 186
4.9.4. Прокрутка колесика мыши……………………………………………………………………………………. 186
4.9.5. Изменение внешнего вида указателя мыши…………………………………………………………. 187
4.10. Технология drag & drop………………………………………………………………………………………………….. 190
4.10.1. Запуск перетаскивания………………………………………………………………………………………… 190
4.10.2. Класс QMimeData…………………………………………………………………………………………………. 192
4.10.3. Обработка сброса………………………………………………………………………………………………… 195
4.11. Работа с буфером обмена………………………………………………………………………………………………. 198
Глава 5. Размещение нескольких компонентов в окне…………………………. 199
5.1. Абсолютное позиционирование………………………………………………………………………………………. 199
5.2. Горизонтальное и вертикальное выравнивание…………………………………………………………….. 200
5.3. Выравнивание по сетке…………………………………………………………………………………………………….. 204
5.4. Выравнивание компонентов формы………………………………………………………………………………… 206
5.5. Классы QStackedLayout и QStackedWidget…………………………………………………………………….. 209
5.6. Класс QSizePolicy……………………………………………………………………………………………………………… 210
5.7. Объединение компонентов в группу……………………………………………………………………………….. 212
5.8. Панель с рамкой………………………………………………………………………………………………………………… 214
5.9. Панель с вкладками………………………………………………………………………………………………………….. 216
5.10. Компонент «аккордеон»…………………………………………………………………………………………………. 221
5.11. Панели с изменяемым размером……………………………………………………………………………………. 224
5.12. Область с полосами прокрутки……………………………………………………………………………………… 226
Глава 6. Основные компоненты…………………………………………………………… 229
6.1. Надпись……………………………………………………………………………………………………………………………… 229
6.2. Командная кнопка…………………………………………………………………………………………………………….. 234
6.3. Переключатель………………………………………………………………………………………………………………….. 237
6.4. Флажок………………………………………………………………………………………………………………………………. 238
6.5. Однострочное текстовое поле…………………………………………………………………………………………. 239
6.5.1. Основные методы и сигналы…………………………………………………………………………………. 239
6.5.2. Ввод данных по маске……………………………………………………………………………………………. 245
6.5.3. Контроль ввода………………………………………………………………………………………………………. 246
6.6. Многострочное текстовое поле……………………………………………………………………………………….. 247
6.6.1. Основные методы и сигналы…………………………………………………………………………………. 247
6.6.2. Изменение настроек поля………………………………………………………………………………………. 251
6.6.3. Изменение характеристик текста и фона……………………………………………………………… 254
6.6.4. Класс QTextDocument…………………………………………………………………………………………….. 256
6.6.5. Класс QTextCursor………………………………………………………………………………………………….. 260
6.7. Текстовый браузер……………………………………………………………………………………………………………. 265
6.8. Поля для ввода целых и вещественных чисел………………………………………………………………… 267
6.9. Поля для ввода даты и времени……………………………………………………………………………………….. 270
6.10. Календарь……………………………………………………………………………………………………………………….. 273
6.11. Электронный индикатор………………………………………………………………………………………………… 276
6.12. Индикатор процесса……………………………………………………………………………………………………….. 277
6.13. Шкала с ползунком…………………………………………………………………………………………………………. 279
6.14. Класс QDial……………………………………………………………………………………………………………………… 281
6.15. Полоса прокрутки…………………………………………………………………………………………………………… 282
Глава 7. Списки и таблицы………………………………………………………………….. 283
7.1. Раскрывающийся список………………………………………………………………………………………………….. 283
7.1.1. Добавление, изменение и удаление элементов……………………………………………………. 283
7.1.2. Изменение настроек……………………………………………………………………………………………….. 285
7.1.3. Поиск элемента внутри списка……………………………………………………………………………… 287
7.1.4. Сигналы…………………………………………………………………………………………………………………… 288
7.2. Список для выбора шрифта……………………………………………………………………………………………… 288
7.3. Роли элементов………………………………………………………………………………………………………………….. 289
7.4. Модели………………………………………………………………………………………………………………………………. 290
7.4.1. Доступ к данным внутри модели………………………………………………………………………….. 290
7.4.2. Класс QStringListModel…………………………………………………………………………………………. 292
7.4.3. Класс QStandardItemModel……………………………………………………………………………………. 293
7.4.4. Класс QStandardItem……………………………………………………………………………………………… 297
7.5. Представления…………………………………………………………………………………………………………………… 302
7.5.1. Класс QAbstractItemView……………………………………………………………………………………….. 302
7.5.2. Простой список………………………………………………………………………………………………………. 307
7.5.3. Таблица…………………………………………………………………………………………………………………… 309
7.5.4. Иерархический список…………………………………………………………………………………………… 312
7.5.5. Управление заголовками строк и столбцов…………………………………………………………. 315
7.6. Управление выделением элементов………………………………………………………………………………… 319
7.7. Промежуточные модели…………………………………………………………………………………………………… 322
Глава 8. Работа с графикой………………………………………………………………….. 325
8.1. Вспомогательные классы…………………………………………………………………………………………………. 325
8.1.1. Класс QColor: цвет…………………………………………………………………………………………………. 326
8.1.2. Класс QPen: перо……………………………………………………………………………………………………. 332
8.1.3. Класс QBrush: кисть……………………………………………………………………………………………….. 333
8.1.4. Класс QLine: линия………………………………………………………………………………………………… 334
8.1.5. Класс QPolygon: многоугольник…………………………………………………………………………… 335
8.1.6. Класс QFont: шрифт………………………………………………………………………………………………. 337
8.2. Класс QPainter………………………………………………………………………………………………………………….. 340
8.2.1. Рисование линий и фигур………………………………………………………………………………………. 341
8.2.2. Вывод текста…………………………………………………………………………………………………………… 344
8.2.3. Вывод изображения……………………………………………………………………………………………….. 346
8.2.4. Преобразование систем координат………………………………………………………………………. 348
8.2.5. Сохранение команд рисования в файл…………………………………………………………………. 349
8.3. Работа с изображениями………………………………………………………………………………………………….. 350
8.3.1. Класс QPixmap……………………………………………………………………………………………………….. 350
8.3.2. Класс QBitmap………………………………………………………………………………………………………… 354
8.3.3. Класс QImage………………………………………………………………………………………………………….. 355
8.3.4. Класс QIcon…………………………………………………………………………………………………………….. 360
Глава 9. Графическая сцена…………………………………………………………………. 363
9.1. Класс QGraphicsScene: сцена………………………………………………………………………………………….. 363
9.1.1. Настройка параметров сцены………………………………………………………………………………. 364
9.1.2. Добавление и удаление графических объектов…………………………………………………… 365
9.1.3. Добавление компонентов на сцену………………………………………………………………………. 366
9.1.4. Поиск объектов……………………………………………………………………………………………………….. 367
9.1.5. Управление фокусом ввода…………………………………………………………………………………… 368
9.1.6. Управление выделением объектов……………………………………………………………………….. 369
9.1.7. Прочие методы и сигналы……………………………………………………………………………………… 370
9.2. Класс QGraphicsView: представление…………………………………………………………………………….. 371
9.2.1. Настройка параметров представления………………………………………………………………… 372
9.2.2. Преобразования между координатами представления и сцены………………………… 373
9.2.3. Поиск объектов……………………………………………………………………………………………………….. 374
9.2.4. Трансформация систем координат……………………………………………………………………….. 375
9.2.5. Прочие методы……………………………………………………………………………………………………….. 375
9.3. Класс QGraphicsItem: базовый класс для графических объектов………………………………… 376
9.3.1. Настройка параметров объекта……………………………………………………………………………. 377
9.3.2. Трансформация объекта………………………………………………………………………………………… 381
9.3.3. Прочие методы……………………………………………………………………………………………………….. 381
9.4. Графические объекты……………………………………………………………………………………………………….. 382
9.4.1. Линия……………………………………………………………………………………………………………………….. 383
9.4.2. Класс QAbstractGraphicsShapeItem………………………………………………………………………. 383
9.4.3. Прямоугольник……………………………………………………………………………………………………….. 384
9.4.4. Многоугольник……………………………………………………………………………………………………….. 384
9.4.5. Эллипс…………………………………………………………………………………………………………………….. 384
9.4.6. Изображение…………………………………………………………………………………………………………… 385
9.4.7. Простой текст…………………………………………………………………………………………………………. 386
9.4.8. Форматированный текст……………………………………………………………………………………….. 387
9.5. Группировка объектов……………………………………………………………………………………………………… 389
9.6. Эффекты…………………………………………………………………………………………………………………………….. 389
9.6.1. Класс QGraphicsEffect……………………………………………………………………………………………. 390
9.6.2. Тень………………………………………………………………………………………………………………………….. 390
9.6.3. Размытие…………………………………………………………………………………………………………………. 392
9.6.4. Изменение цвета……………………………………………………………………………………………………… 392
9.6.5. Изменение прозрачности……………………………………………………………………………………….. 393
9.7. Обработка событий………………………………………………………………………………………………………….. 394
9.7.1. События клавиатуры……………………………………………………………………………………………… 394
9.7.2. События мыши……………………………………………………………………………………………………….. 395
9.7.3. Обработка перетаскивания и сброса……………………………………………………………………. 399
9.7.4. Фильтрация событий……………………………………………………………………………………………… 401
9.7.5. Обработка изменения состояния объекта……………………………………………………………. 401
Глава 10. Диалоговые окна………………………………………………………………….. 405
10.1. Пользовательские диалоговые окна……………………………………………………………………………… 405
10.2. Класс QDialogButtonBox………………………………………………………………………………………………… 408
10.3. Класс QMessageBox………………………………………………………………………………………………………… 411
10.3.1. Основные методы и сигналы……………………………………………………………………………… 413
10.3.2. Окно для вывода обычного сообщения…………………………………………………………….. 415
10.3.3. Окно запроса подтверждения……………………………………………………………………………. 415
10.3.4. Окно для вывода предупреждающего сообщения…………………………………………… 416
10.3.5. Окно для вывода критического сообщения………………………………………………………. 417
10.3.6. Окно «О программе»…………………………………………………………………………………………… 418
10.3.7. Окно «About Qt»………………………………………………………………………………………………….. 418
10.4. Класс QInputDialog………………………………………………………………………………………………………… 418
10.4.1. Основные методы и сигналы……………………………………………………………………………… 419
10.4.2. Окна для ввода строки……………………………………………………………………………………….. 422
10.4.3. Окно для ввода целого числа…………………………………………………………………………….. 423
10.4.4. Окно для ввода вещественного числа……………………………………………………………….. 424
10.4.5. Окно для выбора пункта из списка……………………………………………………………………. 425
10.5. Класс QFileDialog…………………………………………………………………………………………………………… 426
10.5.1. Основные методы и сигналы……………………………………………………………………………… 426
10.5.2. Окно для выбора каталога…………………………………………………………………………………. 429
10.5.3. Окно для открытия файла………………………………………………………………………………….. 430
10.5.4. Окно для сохранения файла………………………………………………………………………………. 431
10.6. Окно для выбора цвета…………………………………………………………………………………………………… 432
10.7. Окно для выбора шрифта……………………………………………………………………………………………….. 433
10.8. Окно для вывода сообщения об ошибке……………………………………………………………………….. 434
10.9. Окно с индикатором хода процесса……………………………………………………………………………… 435
10.10. Создание многостраничного мастера………………………………………………………………………… 437
10.10.1. Класс QWizard…………………………………………………………………………………………………… 437
10.10.2. Класс QWizardPage………………………………………………………………………………………….. 442
Глава 11. Создание SDI- и MDI-приложений………………………………………… 447
11.1. Создание главного окна приложения……………………………………………………………………………. 447
11.2. Меню………………………………………………………………………………………………………………………………… 454
11.2.1. Класс QMenuBar…………………………………………………………………………………………………. 454
11.2.2. Класс QMenu……………………………………………………………………………………………………….. 455
11.2.3. Контекстное меню………………………………………………………………………………………………. 459
11.2.4. Класс QAction……………………………………………………………………………………………………… 460
11.2.5. Объединение переключателей в группу…………………………………………………………… 464
11.3. Панели инструментов…………………………………………………………………………………………………….. 466
11.3.1. Класс QToolBar…………………………………………………………………………………………………… 466
11.3.2. Класс QToolButton……………………………………………………………………………………………… 469
11.4. Прикрепляемые панели………………………………………………………………………………………………….. 470
11.5. Управление строкой состояния……………………………………………………………………………………… 472
11.6. MDI-приложения…………………………………………………………………………………………………………….. 474
11.6.1. Класс QMdiArea………………………………………………………………………………………………….. 474
11.6.2. Класс QMdiSubWindow………………………………………………………………………………………. 478
11.7. Добавление значка приложения в область уведомлений……………………………………………. 479
Заключение………………………………………………………………………………………….. 483
Приложение. Описание электронного архива………………………………………. 485
Предметный указатель…………………………………………………………………………. 487
-
Нет в наличии
Qt 6. Разработка оконных приложений на C++
1250 ₽