Python 3 и PyQt 5. Разработка приложений

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Описан язык Python з: типы данных, операторы, условия, циклы, реryлярные выражения, функции, инструменты объектно-ориентированноrо проrраммирования, работа с файлами и каталоrами, часто используемые модули стандартной библиотеки. Приведены основы базы данных SQLite, интерфейс доступа к базе и способы получения данных из Интернета. Особое внимание уделено библиотеке PyQt 5, позволяющей создавать приложения с rpафическим интерфейсом на языке Python. Рассмотрены средства для обработки сигналов и событий, управления свойствами окна, разработки мноrопоточных приложений, описаны основные компоненты (кнопки, текстовые поля, списки, таблицы, меню, панели инструментов и др.), варианты их размещения внутри окна, инструменты для работы с базами данных, мультимедиа, печати документов и экспорта их в формате Adobe PDF. На сайте издательства приведены все примеры из книги. Для пpoгpaммucmoв.

Author(s): Прохоренок Н., Дронов В.
Publisher: БХВ-Петербург
Year: 2016

Language: Russian
Pages: 833
City: Санкт-Петербург

Введение................................................................................................................................ 15

ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PYTHON....................................................................... 17

Глава 1. Первые шаги........................................................................................................19
1.1. Установка Python........................................................................................................................ 19
1.1.1. Установка нескольких интерпретаторов Python..........................................................23
1.1.2. Запуск программы с помощью разных версий Python............................................... 25
1.2. Первая программа на Python..................................................................................................... 26
1.3. Структура программы................................................................................................................28
1.4. Комментарии............................................................................................................................... 31
1.5. Скрытые возможности IDLE.................................................................................................... 32
1.6. Вывод результатов работы программы...................................................................................33
1.7. Ввод данных................................................................................................................................ 35
1.8. Доступ к документации......................................................................................... 37

Глава 2. Переменные..........................................................................................................40
2.1. Именование переменных.......................................................................................................... 40
2.2. Типы данных............................................................................................................................... 42
2.3. Присваивание значения переменным................................................................ 45
2.4. Проверка типа данных................................................................................................................47
2.5. Преобразование типов данных.................................................................................................48
2.6. Удаление переменной................................................................................................................51

Глава 3. Операторы............................................................................................................52
3.1. Математические операторы...................................................................................................... 52
3.2. Двоичные операторы..................................................................................................................54
3.3. Операторы для работы с последовательностями................................................................... 55
3.4. Операторы присваивания...........................................................................................................56
3.5. Приоритет выполнения операторов......................................................................................... 57

Глава 4. Условные операторы и циклы.......................................................................59
4.1. Операторы сравнения.................................................................................................................60
4.2. Оператор ветвления if...else...................................................................................................... 62
4.3. Циклfo r ........................................................................................................................................65
4.4. Функции range() и enumerateO................................................................................................. 67
4.5. Цикл while.....................................................................................................................................70
4.6. Оператор continue. Переход на следующую итерацию цикла.............................................71
4.7. Оператор break. Прерывание цикла........................................................................................ 71

Глава 5. Числа...................................................................................................................... 73
5.1. Встроенные функции и методы для работы с числами........................................................ 75
5.2. Модуль math. Математические функции.................................................................................77
5.3. Модуль random. Генерация случайных чисел........................................................................78

Глава 6. Строки и двоичные данные............................................................................81
6.1. Создание строки.......................................................................................................................... 82
6.2. Специальные символы...............................................................................................................86
6.3. Операции над строками..............................................................................................................86
6.4. Форматирование строк........................................................................................ 89
6.5. Мето дfor mat ()............................................................................................................................. 95
6.6. Функции и методы для работы со строками..........................................................................99
6.7. Настройка локали..................................................................................................................... 103
6.8. Изменение регистра символов.................................................................................................104
6.9. Функции для работы с символами......................................................................................... 104
6.10. Поиск и замена в строке.........................................................................................................105
6.11. Проверка типа содержимого строки................................................................................... 108
6.12. Тип данных bytes..................................................................................................................... 111
6.13. Тип данных by tear г a y.............................................................................................................115
6.14. Преобразование объекта в последовательность байтов...................................................118
6.15. Шифрование строк........................................................................................................... 119

Глава 7. Регулярные выражения................................................................................. 121
7.1. Синтаксис регулярных выражений........................................................................................ 121
7.2. Поиск первого совпадения с шаблоном................................................................................. 130
7.3. Поиск всех совпадений с шаблоном...................................................................................... 135
7.4. Замена в строке......................................................................................................................... 137
7.5. Прочие функции и методы.......................................................................................................139

Глава 8. Списки, кортежи, множества и диапазоны...............................................140
8.1. Создание списка........................................................................................................................ 141
8.2. Операции над списками...........................................................................................................144
8.3. Многомерные списки............................................................................................................... 147
8.4. Перебор элементов списка.......................................................................................................148
8.5. Генераторы списков и выражения-генераторы.................................................................... 149
8.6. Функции map(), zip(), filter() и reduce()................................................................................. 150
8.7. Добавление и удаление элементов списка.............................................................................153
8.8. Поиск элемента в списке и получение сведений о значениях, входящих в список....... 155
8.9. Переворачивание и перемешивание списка..........................................................................157
8.10. Выбор элементов случайным образом................................................................................. 157
8.11. Сортировка списка.................................................................................................................. 158
8.12. Заполнение списка числами...................................................................................................159
8.13. Преобразование списка в строку.......................................................................................... 160
8.14. Кортежи....................................................................................................................................160
8.15. Множества................................................................................................................................162
8.16. Диапазоны................................................................................................................................167
8.17. Модуль itertools....................................................................................................................... 169
8.17.1. Генерация неопределенного количества значений................................................169
8.17.2. Генерация комбинаций значений.............................................................................170
8.17.3. Фильтрация элементов последовательности.......................................................... 171
8.17.4. Прочие функции.........................................................................................................172

Глава 9. Словари...............................................................................................................175
9.1. Создание словаря...................................................................................................................... 175
9.2. Операции над словарями......................................................................... 178
9.3. Перебор элементов словаря.....................................................................................................179
9.4. Методы для работы со словарями.......................................................................................... 180
9.5. Генераторы словарей................................................................................................................ 183

Глава 10. Работа с датой и временем.......................................................................... 184
10.1. Получение текущих даты и времени................................................................................... 184
10.2. Форматирование даты и времени......................................................................................... 186
10.3. «Засыпание» скрипта.............................................................................................................. 188
10.4. Модуль datetime. Манипуляции датой и временем........................................................... 189
10.4.1. Класс timedelta...........................................................................................................189
10.4.2. Класс date...................................................................................................................191
10.4.3. Класс time...................................................................................................................195
10.4.4. Класс datetime............................................................................................................197
10.5. Модуль calendar. Вывод календаря.....................................................................................201
10.5.1. Методы классов TextCalendar п LocaleTextCalendar............................................ 203
10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar....................................204
10.5.3. Другие полезные функции........................................................................................205
10.6. Измерение времени выполнения фрагментов кода...........................................................208

Глава 11. Пользовательские функции........................................................................211
11.1. Определение функции и ее вызов........................................................................................211
11.2. Расположение определений функций..................................................................................214
11.3. Необязательные параметры и сопоставление по ключам................................................ 215
11.4. Переменное число параметров в функции......................................................................... 218
11.5. Анонимные функции..............................................................................................................220
11.6. Функции-генераторы..............................................................................................................221
11.7. Декораторы функций............................................................................................................. 222
11.8. Рекурсия. Вычисление факториала......................................................................................224
11.9. Глобальные и локальные переменные................................................................................ 225
11.10. Вложенные функции........................................................................................................... 228
11.11. Аннотации функций............................................................................................................ 230

Глава 12. Модули и пакеты............................................................................................231
12.1. Инструкция import..................................................................................................................231
12.2. Инструкцияfro m .....................................................................................................................235
12.3. Пути поиска модулей............................................................................................................ 237
12.4. Повторная загрузка модулей................................................................................................ 238
12.5. Пакеты..................................................................................................................................... 239

Глава 13. Объектно-ориентированное программирование..................................243
13.1. Определение класса и создание экземпляра класса...........................................................243
13.2. Методы__inti__О и del__0 ............................................................................................... 247
13.3. Наследование.......................................................................................................................... 247
13.4. Множественное наследование........................................................................ 249
13.4.1. Примеси и их использование....................................................................................251
13.5. Специальные методы..............................................................................................................252
13.6. Перегрузка операторов.......................................................................................................... 255
13.7. Статические методы и методы класса.................................................................................257
13.8. Абстрактные методы..............................................................................................................258
13.9. Ограничение доступа к идентификаторам внутри класса................................................ 260
13.10. Свойства класса....................................................................................................................261
13.11. Декораторы классов.............................................................................................................263

Глава 14. Обработка исключений................................................................................ 264
14.1. Инструкция try...except...else...finally....................................................................................265
14.2. Инструкция with...as...............................................................................................................269
14.3. Классы встроенных исключений..........................................................................................271
14.4. Пользовательские исключения............................................................................................. 273

Глава 15. Итераторы, контейнеры и перечисления...............................................277
15.1. Итераторы............................................................................................................................... 278
15.2. Контейнеры............................................................................................................................. 279
15.2.1. Контейнеры-последовательности............................................................................ 279
15.2.2. Контейнеры-словари................................................................................................. 281
15.3. Перечисления.......................................................................................................................... 282

Глава 16. Работа с файлами и каталогами................................................................287
16.1. Открытие файла......................................................................................................................287
16.2. Методы для работы с файлами.............................................................................................294
16.3. Доступ к файлам с помощью модуля os..............................................................................300
16.4. Классы StringlO и BytesIO..................................................................................................... 302
16.5. Права доступа к файлам и каталогам...................................................................................306
16.6. Функции для манипулирования файлами........................................................................... 308
16.7. Преобразование пути к файлу или каталогу....................................................................... 311
16.8. Перенаправление ввода/вывода............................................................................................ 313
16.9. Сохранение объектов в файл................................................................................................ 316
16.10. Функции для работы с каталогами.....................................................................................320
16.11. Исключения, возбуждаемые файловыми операциями................................................... 323

Глава 17. Основы SQLite................................................................................................325
17.1. Создание базы данных............................................................................................... 325
17.2. Создание таблицы...................................................................................................................327
17.3. Вставка записей......................................................................................................................333
17.4. Обновление и удаление записей...........................................................................................336
17.5. Изменение структуры таблицы............................................................................................. 336
17.6. Выбор записей........................................................................................................................ 337
17.7. Выбор записей из нескольких таблиц..................................................................................340
17.8. Условия в инструкциях WHERE и НА VING....................................................................... 342
17.9. Индексы....................................................................................................................................345
17.10. Вложенные запросы.............................................................................................................347
17.11. Транзакции....................................................................................................... 348
17.12. Удаление таблицы и базы данных......................................................................................351

Глава 18. Доступ к базе данных SQLite из Python..................................................352
18.1. Создание и открытие базы данных......................................................................................353
18.2. Выполнение запросов.............................................................................................................354
18.3. Обработка результата запроса.............................................................................................. 358
18.4. Управление транзакциями.................................................................................................... 362
18.5. Создание пользовательской сортировки............................................................................. 364
18.6. Поиск без учета регистра символов.....................................................................................365
18.7. Создание агрегатных функций............................................................................................. 366
18.8. Преобразование типов данных............................................................................................. 367
18.9. Сохранение в таблице даты и времени................................................................................371
18.10. Обработка исключений....................................................................................................... 372
18.11. Трассировка выполняемых запросов.................................................................................375

Глава 19. Взаимодействие с Интернетом..................................................................376
19.1. Разбор URL-адреса.................................................................................................................376
19.2. Кодирование и декодирование строки запроса.................................................................. 379
19.3. Преобразование относительного URL-адреса в абсолютный..........................................383
19.4. Разбор HTML-эквивалентов................................................................................................. 383
19.5. Обмен данными по протоколу HTTP...................................................................................385
19.6. Обмен данными с помощью модуля urllib.request.............................................................390
19.7. Определение кодировки........................................................................................................ 393

ЧАСТЬ II. БИБЛИОТЕКА PYQT 5 .............................................................................395

Глава 20. Знакомство с PyQt 5......................................................................................397
20.1. Установка PyQt 5 ....................................................................................................................397
20.2. Первая программа...................................................................................................................400
20.3. Структура PyQt-программы.................................................................................................. 401
20.4. ООП-стиль создания окна................................................................................... 403
20.5. Создание окна с помощью программы Qt Designer...........................................................407
20.5.1. Создание формы........................................................................................................ 407
20.5.2. Загрузка ui-файла в программе................................................................................ 409
20.5.3. Преобразование ui-файла в ру-файл....................................................................... 411
20.6. Модули PyQt 5 ........................................................................................................................413
20.7. Типы данных в PyQt.............................................................................................................. 414
20.8. Управление основным циклом приложения....................................................................... 415
20.9. Многопоточные приложения................................................................................................ 416
20.9.1. Класс QThread: создание потока............................................................................. 416
20.9.2. Управление циклом внутри потока......................................................................... 420
20.9.3. Модуль queue: создание очереди заданий............................................................. 424
20.9.4. Классы QMutex и QMutexLocker.............................................................................. 427
20.10. Вывод заставки.....................................................................................................................431
20.11. Доступ к документации....................................................................................................... 433

Глава 21. Управление окном приложения................................................................435
21.1. Создание и отображение окна.............................................................................................. 435
21.2. Указание типа окна.................................................................................................................436
21.3. Изменение и получение размеров окна.............................................................................. 438
21.4. Местоположение окна на экране и управление им............................................................441
21.5. Указание координат и размеров...........................................................................................444
21.5.1. Класс QPoint: координаты точки........................................................................... 444
21.5.2. Класс QSize: размеры прямоугольной области.....................................................445
21.5.3. Класс QRecf. координаты и размеры прямоугольной области...........................447
21.6. Разворачивание и сворачивание окна..................................................................................452
21.7. Управление прозрачностью окна.........................................................................................454
21.8. Модальные окна......................................................................................................................455
21.9. Смена значка в заголовке окна.............................................................................................456
21.10. Изменение цвета фона окна................................................................................................ 457
21.11. Вывод изображения в качестве фона.................................................................................459
21.12. Создание окна произвольной формы.................................................................................460
21.13. Всплывающие подсказки.................................................................................................... 462
21.14. Закрытие окна из программы.............................................................................................463

Глава 22. Обработка сигналов и событий....................................... .........................464
22.1. Назначение обработчиков сигналов.....................................................................................464
22.2. Блокировка и удаление обработчика.................................................................................. 468
22.3. Генерация сигналов................................................................................................................470
22.4. Передача данных в обработчик............................................................................................472
22.5. Использование таймеров....................................................................................................... 473
22.6. Перехват всех событий.......................................................................................................... 476
22.7. События окна..........................................................................................................................479
22.7.1. Изменение состояния окна........................ 479
22.7.2. Изменение положения и размеров окна................................................................ 480
22.7.3. Перерисовка окна или его части............................................................................. 481
22.7.4. Предотвращение закрытия окна.............................................................................. 482
22.8. События клавиатуры............................................................................................................. 483
22.8.1. Установка фокуса ввода............................................................................................483
22.8.2. Назначение клавиш быстрого доступа...................................................................486
22.8.3. Нажатие и отпускание клавиши на клавиатуре..................................................... 488
22.9. События мыши........................................................................................................................489
22.9.1. Нажатие и отпускание кнопки мыши.....................................................................489
22.9.2. Перемещение указателя мыши................................................................................ 491
22.9.3. Наведение и увод указателя......................................................................................492
22.9.4. Прокрутка колесика мыши.......................................................................................492
22.9.5. Изменение внешнего вида указателя мыши...........................................................493
22.10. Технология drag & drop.......................................................................................................495
22.10.1. Запуск перетаскивания............................................................................................495
22.10.2. Класс QMimeData.................................................................................................... 497
22.10.3. Обработка сброса.................................................................................................... 498
22.11. Работа с буфером обмена.................................................................................................... 500
22.12. Фильтрация событий................................. 501
22.13. Искусственные события...................................................................................................... 501


Глава 23. Размещение компонентов в окнах........................................................... 503
23.1. Абсолютное позиционирование........................................................................................... 503
23.2. Горизонтальное и вертикальное выравнивание................................................................. 504
23.3. Выравнивание по сетке......................................................................................................... 507
23.4. Выравнивание компонентов формы....................................................................................510
23.5. Классы QStackedLayout и QStackedWidget.......................................................................... 512
23.6. Класс QSizePolicy....................................................................................................................513
23.7. Объединение компонентов в группу....................................................................................514
23.8. Панель с рамкой......................................................................................................................516
23.9. Панель с вкладками................................................................................................................517
23.10. Компонент «аккордеон»...................................................................................................... 521
23.11. Панели с изменяемым размером........................................................................................523
23.12. Область с полосами прокрутки..........................................................................................525

Глава 24. Основные компоненты................................................................................526
24.1. Надпись.................................................................................................................................... 526
24.2. Командная кнопка..................................................................................................................529
24.3. Переключатель........................................................................................................................ 531
24.4. Флажок.....................................................................................................................................531
24.5. Однострочное текстовое поле.............................................................................................. 532
24.5.1. Основные методы и сигналы....................................................................................532
24.5.2. Ввод данных по маске............................................................................................... 535
24.5.3. Контроль ввода....................................................................... 536
24.6. Многострочное текстовое поле............................................................................................ 537
24.6.1. Основные методы и сигналы....................................................................................538
24.6.2. Изменение параметров поля.....................................................................................540
24.6.3. Указание параметров текста и фона....................................................................... 541
24.6.4. Класс QTextDocument................................................................................................ 542
24.6.5. Класс QTextCursor..................................................................................................... 545
24.7. Текстовый браузер..................... 548
24.8. Поля для ввода целых и вещественных чисел.................................................................... 550
24.9. Поля для ввода даты и времени............................................................................................ 551
24.10. Календарь.............................................................................................................................. 554
24.11. Электронный индикатор................ 556
24.12. Индикатор хода процесса.................................................................................................... 557
24.13. Шкала с ползунком...............................................................................................................558
24.14. Круговая шкала с ползунком.............................................................................................. 560
24.15. Полоса прокрутки.................................................................................................................561
24.16. Web-браузер.......................................................................................................................... 561

Глава 25. Списки и таблицы.........................................................................................565
25.1. Раскрывающийся список........................................................................................................565
25.1.1. Добавление, изменение и удаление элементов......................................................565
25.1.2. Изменение параметров списка.................................................................................566
25.1.3. Поиск элементов.........................................................................................................567
25.1.4. Сигналы....................................................................................................................... 568
25.2. Список для выбора шрифта.................................................................................................. 568
25.3. Роли элементов....................................................................................................................... 569
25.4. Модели......................................................................................................................................570
25.4.1. Доступ к данным внутри модели.............................................................................570
25.4.2. Класс QStringListModel............................................................................................. 571
25.4.3. Класс QStandardltemModel.......................................................................................573
25.4.4. Класс QStandardltem................................................................................................. 576
25.5. Представления........................................................................................................................ 579
25.5.1. Класс QAbstractltemView...........................................................................................580
25.5.2. Простой список...........................................................................................................583
25.5.3. Таблица........................................................................................................................ 585
25.5.4. Иерархический список.............................................................................................. 587
25.5.5. Управление заголовками строк и столбцов............................................................589
25.6. Управление выделением элементов.....................................................................................591
25.7. Промежуточные модели........................................................................................................ 593
25.8. Использование делегатов...................................................................................................... 595

Глава 26. Работа с базами данных.............................................................................. 599
26.1. Соединение с базой данных.................................................................................................. 599
26.2. Получение сведений о структуре таблицы......................................................................... 602
26.2.1. Получение сведений о таблице................................................................................602
26.2.2. Получение сведений об отдельном поле................................................................603
26.2.3. Получение сведений об индексе............................................................................. 603
26.2.4. Получение сведений об ошибке...............................................................................604
26.3. Выполнение SQL-запросов и получение их результатов................................................. 604
26.3.1. Выполнение запросов............................................................................................... 605
26.3.2. Обработка результатов выполнения запросов.......................................................607
26.3.3. Очистка запроса..........................................................................................................608
26.3.4. Получение служебных сведений о запросе............................................................609
26.4. Модели, связанные с данными............................................................................................. 609
26.4.1. Модель, связанная с SQL-запросом........................................................................ 609
26.4.2. Модель, связанная с таблицей..................................................................................611
26.4.3. Модель, поддерживающая межтабличные связи.................................................. 616
26.4.4. Использование связанных делегатов...................................................................... 619

Глава 27. Работа с графикой......................................................................................... 621
27.1. Вспомогательные классы..................................................................................................... 621
27.1.1. Класс QColor. цвет.................................................................................................... 622
27.1.2. Класс QPen: перо....................................................................................................... 625
27.1.3. Класс QBrush: кисть.................................................................................................. 627
27.1.4. Класс QLine: линия.................................................................................................... 627
27.1.5. Класс QPolygon: многоугольник............................................................................. 628
27.1.6. Класс QFont: шрифт.................................................................................................. 630
27.2. Класс QPainter........................................................................................................................ 632
27.2.1. Рисование линий и фигур.........................................................................................633
27.2.2. Вывод текста...............................................................................................................636
27.2.3. Вывод изображения................................................................................................... 637
27.2.4. Преобразование систем координат......................................................................... 638
27.2.5. Сохранение команд рисования в файл.................................................................... 639
27.3. Работа с изображениями....................................................................................................... 640
27.3.1. Класс QPixmap..........................................................................................................641
27.3.2. Класс QBitmap.............................................................................................................643
27.3.3. Класс Qlmage..............................................................................................................644
27.3.4. Класс Qlcon.................................................................................................................647

Глава 28. Графическая сцена.........................................................................................649
28.1. Класс QGraphicsScene: сцена................................................................................................ 649
28.1.1. Настройка сцены....................................................................................................... 650
28.1.2. Добавление и удаление графических объектов.................................................... 650
28.1.3. Добавление компонентов на сцену......................................................................... 651
28.1.4. Поиск объектов.......................................................................................................... 652
28.1.5. Управление фокусом ввода......................................................................................653
28.1.6. Управление выделением объектов.......................................................................... 654
28.1.7. Прочие методы и сигналы........................................................................................654
28.2. Класс QGraphicsView: представление..................................................................................656
28.2.1. Настройка представления.........................................................................................656
28.2.2. Преобразования между координатами представления и сцены......................... 657
28.2.3. Поиск объектов...........................................................................................................658
28.2.4. Преобразование системы координат...................................................................... 658
28.2.5. Прочие методы...........................................................................................................659
28.3. Класс QGraphicsItem: базовый класс для графических объектов....................................660
28.3.1. Настройка объекта..................................................................................................... 660
28.3.2. Выполнение преобразований...................................................................................662
28.3.3. Прочие методы...........................................................................................................663
28.4. Графические объекты.............................................................................................................664
28.4.1. Линия........................................................................................................................... 664
28.4.2. Класс QAbstractGraphicsShapeltem......................................................................... 664
28.4.3. Прямоугольник...........................................................................................................665
28.4.4. Многоугольник...........................................................................................................665
28.4.5. Эллипс......................................................................................................................... 665
28.4.6. Изображение...............................................................................................................666
28.4.7. Простой текст.............................................................................................................667
28.4.8. Форматированный текст...........................................................................................667
28.5. Группировка объектов........................................................................................................... 668
28.6. Эффекты.................................................................................................................................. 669
28.6.1. Класс QGraphicsEffect............................................................................................... 669
28.6.2. Тень.............................................................................................................................. 669
28.6.3. Размытие.....................................................................................................................670
28.6.4. Изменение цвета........................................................................................................ 671
28.6.5. Изменение прозрачности..........................................................................................671
28.7. Обработка событий.................................................................................................................672
28.7.1. События клавиатуры................................................................................................. 672
28.7.2. События мыши...........................................................................................................673
28.7.3. Обработка перетаскивания и сброса....................................................................... 675
28.7.4. Фильтрация событий................................................................................................. 677
28.7.5. Обработка изменения состояния объекта...............................................................677

Глава 29. Диалоговые окна............................................................................................679
29.1. Пользовательские диалоговые окна.....................................................................................679
29.2. Класс QDialogButtonBox....................................................................................................... 681
29.3. Класс QMessageBox................................................................................................................684
29.3.1. Основные методы и сигналы....................................................................................685
29.3.2. Окно информационного сообщения....................................................................... 688
29.3.3. Окно подтверждения................................................................................................. 688
29.3.4. Окно предупреждающего сообщения..................................................................... 689
29.3.5. Окно критического сообщения................................................................................689
29.3.6. Окно сведений о программе.....................................................................................690
29.3.7. Окно сведений о библиотеке Q t.............................................................................. 690
29.4. Класс QInputDialog.................................................................................................................691
29.4.1. Основные методы и сигналы....................................................................................692
29.4.2. Окно для ввода строки.............................................................................................. 694
29.4.3. Окно для ввода целого числа................................................................................... 694
29.4.4. Окно для ввода вещественного числа..................................................................... 695
29.4.5. Окно для выбора пункта из списка......................................................................... 696
29.4.6. Окно для ввода большого текста............................................................................. 696
29.5. Класс QFileDialog...................................................................................................................697
29.5.1. Основные методы и сигналы....................................................................................698
29.5.2. Окно для выбора каталога........................................................................................700
29.5.3. Окно для открытия файлов.......................................................................................701
29.5.4. Окно для сохранения файла......................................................................................702
29.6. Окно для выбора цвета...........................................................................................................704
29.7. Окно для выбора шрифта...................................................................................................... 705
29.8. Окно для вывода сообщения об ошибке............................................................................. 706
29.9. Окно с индикатором хода процесса.....................................................................................706
29.10. Создание многостраничного мастера................................................................................708
29.10.1. Класс QWizard...........................................................................................................708
29.10.2. Класс QWizardPage................................................................................................. 711

Глава 30. Создание SDI- и M D I-прилож ений.................................................................714
30.1. Создание главного окна приложения......................... 714
30.2. Меню.........................................................................................................................................718
30.2.1. Класс QMenuBar........................................................................................................ 719
30.2.2. Класс QMenu...............................................................................................................720
30.2.3. Контекстное меню компонента................................................................................722
30.2.4. Класс QAction..............................................................................................................723
30.2.5. Объединение переключателей в группу................................................................. 726
30.3. Панели инструментов.............................................................................................................727
30.3.1. Класс QToolBar...........................................................................................................728
30.3.2. Класс QToolButton..................................................................................................... 729
30.4. Прикрепляемые панели..........................................................................................................730
30.5. Управление строкой состояния............................................................................................732
30.6. MDI-приложения....................................................................................................................733
30.6.1. Класс QMdiArea..........................................................................................................733
30.6.2. Класс QMdiSubWindow.............................................................................................. 736
30.7. Добавление значка приложения в область уведомлений................................................. 737

Глава 31. Мультимедиа...........................................................................................................739
31.1. Класс QMediaPlayer...............................................................................................................739
31.2. Класс QVideoWidget................................................................................................................748
31.3. Класс QMediaPlaylist..............................................................................................................751
31.4. Запись звука............................................................................................................................ 754
31.4.1. Класс QAudioRecorder............................................................................................... 755
31.4.2. Класс QAudioEncoderSettings........................................................ 757
31.5. Класс QSoundEffect.................................................................................................................761

Глава 32. Печать документов........................................................................................764
32.1. Основные средства печати.................................................................................................... 764
32.1.1. Класс QPrinter.............................................................................................................764
32.1.2. Вывод на печать......................................................................................................... 768
32.1.3. Служебные классы.................................................................................................... 773
32.1.3.1. Класс QPageSize........................................................................................ 774
32.1.3.2. Класс QPageLayout................................................................................... 776
32.2. Задание параметров принтера и страницы......................................................................... 777
32.2.1. Класс QPrintDialog.................................................................................................... 778
32.2.2. Класс QPageSetupDialog...........................................................................................779
32.3. Предварительный просмотр документов перед печатью................................................. 781
32.3.1. Класс QPrintPreviewDialog.......................................................................................781
32.3.2. Класс QPrintPreviewWidget.......................................................................................784
32.4. Получение сведений о принтере. Класс QPrinterlnfo........................................................786
32.5. Экспорт в формат PDF. Класс QPdjWriter................................. 788

Заключение......................................................................................................................... 791
Приложение. Описание электронного архива.......................................................... 792
Предметный указатель......................... 793