Опубликовано

Новая книга: “Python 3 и PyQt 6. Разработка приложений”

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

Представляем новинку: книгу Владимира Дронова и Николая Прохоренка “Python 3 и PyQt 6. Разработка приложений“.

В книге Описан язык Python 3: типы данных, операторы, условия ветвления и выбора, циклы, регулярные выражения, функции, классы, работа с файлами и каталогами, взаимодействие с механизмами Windows, часто используемые модули стандартной библиотеки. Особое внимание уделено библиотеке PyQt, позволяющей создавать приложения с графическим интерфейсом. Описаны средства для создания и вывода окон, основных компонентов (кнопок, полей, полей, списков, таблиц, меню, панелей инструментов и др.). Рассмотрена обработка событий и сигналов, разработка многопоточных программ, работа с базами данных, вывод графики, воспроизведение мультимедиа, запись аудио, видео и фото, печать документов, экспорт их в формат Adobe PDF и сохранения настроек программ. Дан пример полнофункционального приложения для создания и решения головоломок судоку. На сайте издательства размещен электронный архив со всеми примерами из книги.

Вы изучите:

Книгу “Python 3 и PyQt 6. Разработка приложений” можно купить со скидкой в интернет-магазине издательства “БХВ”.

Предисловие…………………………………………………………………………………………… 15

Python………………………………………………………………………………………………………………………………………….. 15

PyQt……………………………………………………………………………………………………………………………………………… 16

Использованное ПО…………………………………………………………………………………………………………………… 16

Типографские соглашения………………………………………………………………………………………………………… 16

Часть I. Основы языка Python………………………………………………….. 19

Глава 1. Первые шаги……………………………………………………………………………. 21

1.1. Установка Python………………………………………………………………………………………………………………… 21

1.2. Интерактивный режим Python. Утилита IDLE…………………………………………………………………. 24

1.3. Введение в Python-программирование……………………………………………………………………………… 25

1.4. Принципы написания Python-программ……………………………………………………………………………. 27

1.4.1. Комментарии и строки документирования…………………………………………………………….. 30

1.4.2. Кодировки, поддерживаемые Python………………………………………………………………………. 31

1.4.3. Подготовка Python-программ для выполнения в UNIX…………………………………………. 31

1.5. Дополнительные возможности IDLE………………………………………………………………………………… 32

1.6. Вывод данных……………………………………………………………………………………………………………………… 33

1.7. Ввод данных………………………………………………………………………………………………………………………… 35

1.8. Утилита pip: установка дополнительных библиотек……………………………………………………… 37

1.9. Доступ к документации………………………………………………………………………………………………………. 42

1.10. Компиляция Python-файлов……………………………………………………………………………………………… 44

Глава 2. Переменные и типы данных…………………………………………………….. 46

2.1. Переменные…………………………………………………………………………………………………………………………. 46

2.2. Типы данных. Понятие объекта и ссылки…………………………………………………………………………. 47

2.3. Присваивание значений переменным……………………………………………………………………………….. 50

2.4. Проверка типа данных……………………………………………………………………………………………………….. 52

2.5. Преобразование типов данных………………………………………………………………………………………….. 53

2.6. Удаление переменных………………………………………………………………………………………………………… 56

Глава 3. Операторы……………………………………………………………………………….. 57

3.1. Математические операторы………………………………………………………………………………………………. 57

3.2. Двоичные операторы………………………………………………………………………………………………………….. 59

3.3. Операторы для работы с последовательностями……………………………………………………………. 60

3.4. Операторы присваивания…………………………………………………………………………………………………… 61

3.5. Пустой оператор…………………………………………………………………………………………………………………. 63

3.6. Приоритет операторов……………………………………………………………………………………………………….. 63

Глава 4. Инструкции ветвления, выбора и циклы…………………………………. 65

4.1. Операторы сравнения…………………………………………………………………………………………………………. 66

4.2. Инструкция ветвления………………………………………………………………………………………………………… 68

4.3. Инструкция выбора…………………………………………………………………………………………………………….. 71

4.4. Цикл перебора последовательности…………………………………………………………………………………. 77

4.5. Цикл с условием………………………………………………………………………………………………………………….. 78

4.6. Оператор continue: переход на следующую итерацию цикла……………………………………….. 79

4.7. Оператор break: прерывание цикла………………………………………………………………………………….. 79

4.8. Оператор присваивания в составе инструкции………………………………………………………………… 80

Глава 5. Числа……………………………………………………………………………………….. 82

5.1. Запись чисел………………………………………………………………………………………………………………………… 82

5.2. Обработка чисел…………………………………………………………………………………………………………………. 84

5.3. Математические функции………………………………………………………………………………………………….. 87

5.4. Генерирование случайных чисел……………………………………………………………………………………… 89

Глава 6. Строки и двоичные данные……………………………………………………… 92

6.1. Создание строк……………………………………………………………………………………………………………………. 92

6.1.1. Специальные символы……………………………………………………………………………………………… 94

6.1.2. Необрабатываемые строки……………………………………………………………………………………… 95

6.2. Операции над строками……………………………………………………………………………………………………… 96

6.3. Форматирование строк………………………………………………………………………………………………………. 98

6.4. Метод format()…………………………………………………………………………………………………………………… 104

6.4.1. Форматируемые строки………………………………………………………………………………………….. 108

6.5. Функции и методы для работы со строками…………………………………………………………………… 109

6.6. Настройка локали…………………………………………………………………………………………………………….. 112

6.7. Изменение регистра символов…………………………………………………………………………………………. 113

6.8. Функции для работы с символами…………………………………………………………………………………… 114

6.9. Поиск и замена в строке……………………………………………………………………………………………………. 114

6.10. Проверка содержимого строки………………………………………………………………………………………. 118

6.11. Двоичные данные типа bytes…………………………………………………………………………………………. 121

6.12. Двоичные данные типа bytearray………………………………………………………………………………….. 125

6.13. Сериализация и десериализация значений………………………………………………………………….. 128

6.14. Хеширование значений………………………………………………………………………………………………….. 129

Глава 7. Регулярные выражения………………………………………………………….. 131

7.1. Синтаксис регулярных выражений…………………………………………………………………………………. 131

7.2. Поиск первого совпадения с шаблоном………………………………………………………………………….. 140

7.3. Поиск всех совпадений с шаблоном……………………………………………………………………………….. 145

7.4. Замена в строке…………………………………………………………………………………………………………………. 146

7.5. Прочие функции и методы……………………………………………………………………………………………….. 148

Глава 8. Списки, кортежи, множества и диапазоны…………………………….. 150

8.1. Создание списков……………………………………………………………………………………………………………… 150

8.2. Операции над списками……………………………………………………………………………………………………. 152

8.3. Многомерные списки………………………………………………………………………………………………………… 155

8.4. Перебор списков……………………………………………………………………………………………………………….. 155

8.5. Генераторы списков и выражения-генераторы……………………………………………………………… 156

8.6. Функции map(), zip(), filter() и reduce()…………………………………………………………………………….. 158

8.7. Добавление и удаление элементов списка……………………………………………………………………… 161

8.8. Поиск элемента в списке и получение сведений об элементах списка………………………… 163

8.9. Переворачивание и перемешивание списка…………………………………………………………………… 164

8.10. Выбор элементов списка случайным образом…………………………………………………………….. 165

8.11. Сортировка списка…………………………………………………………………………………………………………. 166

8.12. Заполнение списка числами………………………………………………………………………………………….. 168

8.13. Преобразование списка в строку…………………………………………………………………………………… 168

8.14. Кортежи…………………………………………………………………………………………………………………………… 169

8.15. Множества, изменяемые и неизменяемые…………………………………………………………………….. 170

8.16. Диапазоны……………………………………………………………………………………………………………………….. 175

8.17. Модуль itertools………………………………………………………………………………………………………………. 177

8.17.1. Генерирование неопределенного количества значений…………………………………. 177

8.17.2. Генерирование комбинаций значений……………………………………………………………… 178

8.17.3. Фильтрация элементов последовательности…………………………………………………… 180

8.17.4. Прочие функции………………………………………………………………………………………………….. 181

Глава 9. Словари………………………………………………………………………………….. 185

9.1. Создание словаря……………………………………………………………………………………………………………… 185

9.2. Операции над словарями…………………………………………………………………………………………………. 187

9.3. Перебор элементов словаря…………………………………………………………………………………………….. 189

9.4. Методы и функции для работы со словарями………………………………………………………………… 190

9.5. Генераторы словарей……………………………………………………………………………………………………….. 193

Глава 10. Работа с датой и временем……………………………………………………. 194

10.1. Получение текущих даты и времени…………………………………………………………………………….. 194

10.2. Форматирование даты и времени………………………………………………………………………………….. 196

10.3. Приостановка выполнения программы………………………………………………………………………… 198

10.4. Значения даты и времени……………………………………………………………………………………………….. 198

10.4.1. Временне промежутки……………………………………………………………………………………… 198

10.4.2. Значения даты…………………………………………………………………………………………………….. 201

10.4.3. Значения времени……………………………………………………………………………………………….. 204

10.4.4. Временне отметки…………………………………………………………………………………………….. 207

10.5. Вывод календаря…………………………………………………………………………………………………………….. 213

10.5.1. Вывод календаря в текстовом виде…………………………………………………………………… 213

10.5.2. Вывод календаря в формате HTML………………………………………………………………….. 215

10.5.3. Другие полезные функции………………………………………………………………………………….. 217

10.6. Измерение времени выполнения фрагментов кода………………………………………………………. 220

Глава 11. Функции………………………………………………………………………………. 222

11.1. Определение и вызов функции……………………………………………………………………………………….. 222

11.1.1. Расположение определений функций……………………………………………………………….. 224

11.1.2. Локальные и глобальные переменные……………………………………………………………… 225

11.1.3. Позиционные и именованные параметры………………………………………………………… 228

11.1.4. Необязательные параметры………………………………………………………………………………. 230

11.1.5. Произвольное количество параметров…………………………………………………………….. 231

11.1.6. Распаковка последовательностей и отображений………………………………………….. 233

11.1.7. Функция как значение. Функции обратного вызова………………………………………… 233

11.2. Анонимные функции……………………………………………………………………………………………………….. 234

11.3. Функции-генераторы………………………………………………………………………………………………………. 236

11.4. Декораторы функций……………………………………………………………………………………………………… 237

11.5. Рекурсия…………………………………………………………………………………………………………………………… 239

11.6. Вложенные функции……………………………………………………………………………………………………….. 240

11.7. Аннотации функций………………………………………………………………………………………………………… 242

Глава 12. Модули, пакеты и импорт…………………………………………………….. 243

12.1. Импорт модуля целиком…………………………………………………………………………………………………. 243

12.2. Импорт отдельных идентификаторов…………………………………………………………………………… 246

12.2.1. Указание идентификаторов, доступных для импорта…………………………………….. 248

12.2.2. Управление доступом к идентификаторам………………………………………………………. 248

12.3. Пути поиска модулей……………………………………………………………………………………………………… 249

12.4. Перезагрузка модулей……………………………………………………………………………………………………. 251

12.5. Пакеты……………………………………………………………………………………………………………………………… 252

Глава 13. Объекты и классы………………………………………………………………… 256

13.1. Определение классов, создание объектов и работа с ними………………………………………… 256

13.2. Атрибуты класса…………………………………………………………………………………………………………….. 259

13.3. Конструкторы и деструкторы……………………………………………………………………………………….. 260

13.4. Наследование………………………………………………………………………………………………………………….. 261

13.4.1. Множественное наследование………………………………………………………………………….. 263

13.4.1.1. Примеси и их использование………………………………………………………………. 265

13.5. Специальные методы……………………………………………………………………………………………………… 266

13.6. Перегрузка операторов………………………………………………………………………………………………….. 269

13.7. Статические методы и методы класса………………………………………………………………………….. 271

13.8. Абстрактные методы………………………………………………………………………………………………………. 272

13.9. Закрытые атрибуты и методы……………………………………………………………………………………….. 273

13.10. Свойства………………………………………………………………………………………………………………………… 274

13.11. Декораторы классов…………………………………………………………………………………………………….. 276

Глава 14. Исключения и их обработка…………………………………………………. 278

14.1. Обработчики исключений……………………………………………………………………………………………… 279

14.2. Обработчики контекстов………………………………………………………………………………………………… 283

14.3. Классы встроенных исключений…………………………………………………………………………………… 285

14.4. Генерирование исключений…………………………………………………………………………………………… 287

14.5. Пользовательские исключения………………………………………………………………………………………. 289

14.6. Проверочная инструкция……………………………………………………………………………………………….. 290

Глава 15. Итераторы, контейнеры и перечисления………………………………. 292

15.1. Итераторы……………………………………………………………………………………………………………………….. 292

15.2. Контейнеры……………………………………………………………………………………………………………………… 293

15.2.1. Контейнеры-последовательности…………………………………………………………………….. 293

15.2.2. Контейнеры-отображения…………………………………………………………………………………. 295

15.3. Перечисления………………………………………………………………………………………………………………….. 296

Глава 16. Работа с файлами и каталогами……………………………………………. 302

16.1. Открытие файлов…………………………………………………………………………………………………………….. 302

16.1.1. Указание путей к файлам и каталогам……………………………………………………………… 305

16.1.2. Текущий рабочий каталог…………………………………………………………………………………. 306

16.2. Чтение и запись данных: объектные инструменты……………………………………………………… 307

16.3. Чтение и запись данных: низкоуровневые инструменты…………………………………………….. 313

16.4. Файлы в памяти………………………………………………………………………………………………………………. 315

16.5. Задание прав доступа к файлам и каталогам………………………………………………………………. 319

16.6. Работа с файлами……………………………………………………………………………………………………………. 321

16.7. Работа с путями………………………………………………………………………………………………………………. 325

16.8. Перенаправление ввода/вывода……………………………………………………………………………………. 326

16.9. Сохранение объектов в файлах…………………………………………………………………………………….. 328

16.10. Работа с каталогами…………………………………………………………………………………………………….. 331

16.10.1. Функция scandir()……………………………………………………………………………………………… 335

16.11. Исключения, генерируемые файловыми операциями……………………………………………….. 337

Глава 17. Работа с механизмами Windows…………………………………………….. 338

17.1. Работа с реестром…………………………………………………………………………………………………………… 338

17.1.1. Открытие и закрытие ветвей реестра………………………………………………………………… 339

17.1.2. Чтение и запись данных реестра……………………………………………………………………….. 340

17.1.3. Перебор элементов и вложенных ветвей реестра……………………………………………. 343

17.2. Получение путей к системным каталогам……………………………………………………………………. 344

17.3. Создание ярлыков…………………………………………………………………………………………………………… 345

Часть II. Библиотека PyQt 6………………………………………………………. 347

Глава 18. Введение в PyQt 6…………………………………………………………………. 349

18.1. Установка PyQt 6…………………………………………………………………………………………………………….. 349

18.2. Первая оконная программа……………………………………………………………………………………………. 349

18.3. Структура PyQt-программы…………………………………………………………………………………………… 350

18.4. ООП-стиль создания окна………………………………………………………………………………………………. 352

18.5. Создание окон с помощью программы Qt Designer……………………………………………………… 356

18.5.1. Создание окон…………………………………………………………………………………………………….. 356

18.5.2. Использование UI-файла в программе……………………………………………………………… 359

18.5.3. Преобразование UI-файла в модуль Python…………………………………………………….. 361

18.6. Модули PyQt 6………………………………………………………………………………………………………………… 362

18.7. Управление циклом обработки событий………………………………………………………………………. 363

18.8. Многопоточные программы………………………………………………………………………………………….. 365

18.8.1. Потоки………………………………………………………………………………………………………………….. 365

18.8.2. Управление потоками………………………………………………………………………………………… 368

18.8.3. Очереди……………………………………………………………………………………………………………….. 372

18.8.4. Блокировщики и автоблокировщики………………………………………………………………… 376

18.9. Вывод заставки……………………………………………………………………………………………………………….. 379

Глава 19. Окна…………………………………………………………………………………….. 382

19.1. Создание и вывод окон…………………………………………………………………………………………………… 382

19.1.1. Типы окон……………………………………………………………………………………………………………. 383

19.2. Размеры окон и управление ими……………………………………………………………………………………. 384

19.3. Местоположение окна и управление им………………………………………………………………………. 387

19.4. Классы, задающие координаты и размеры………………………………………………………………….. 390

19.4.1. Класс QPoint: координаты точки……………………………………………………………………… 390

19.4.2. Класс QSize: размеры прямоугольной области……………………………………………….. 391

19.4.3. Класс QRect: координаты и размеры прямоугольной области………………………. 393

19.5. Разворачивание и сворачивание окон………………………………………………………………………….. 399

19.6. Управление прозрачностью окна………………………………………………………………………………….. 401

19.7. Модальные окна……………………………………………………………………………………………………………… 401

19.8. Смена значка окна………………………………………………………………………………………………………….. 403

19.9. Изменение цвета фона окна……………………………………………………………………………………………. 404

19.10. Вывод изображения в качестве фона………………………………………………………………………….. 405

19.11. Окна произвольной формы…………………………………………………………………………………………… 406

19.12. Всплывающие и расширенные подсказки………………………………………………………………….. 408

19.13. Программное закрытие окна……………………………………………………………………………………….. 409

19.14. Использование таблиц стилей CSS для оформления окон………………………………………… 409

Глава 20. Обработка сигналов и событий…………………………………………….. 414

20.1. Назначение обработчиков сигналов…………………………………………………………………………….. 414

20.1.1. Слоты…………………………………………………………………………………………………………………… 417

20.1.2. Передача данных в обработчик сигнала…………………………………………………………. 418

20.2. Блокировка и удаление обработчиков сигналов…………………………………………………………. 419

20.3. Генерирование сигналов………………………………………………………………………………………………… 421

20.4. Пользовательские сигналы…………………………………………………………………………………………….. 421

20.5. Использование таймеров……………………………………………………………………………………………….. 423

20.6. Обработка всех событий………………………………………………………………………………………………… 426

20.7. События окна………………………………………………………………………………………………………………….. 429

20.7.1. Изменение состояния окна…………………………………………………………………………………. 429

20.7.2. Изменение местоположения и размеров окна………………………………………………….. 430

20.7.3. Перерисовка окна или его части……………………………………………………………………….. 431

20.7.4. Предотвращение закрытия окна……………………………………………………………………….. 431

20.8. События клавиатуры……………………………………………………………………………………………………… 432

20.8.1. Управление фокусом ввода……………………………………………………………………………….. 432

20.8.2. Назначение клавиш быстрого доступа…………………………………………………………….. 435

20.8.3. Нажатие и отпускание клавиш………………………………………………………………………….. 437

20.9. События мыши………………………………………………………………………………………………………………… 439

20.9.1. Нажатие и отпускание кнопок мыши……………………………………………………………….. 439

20.9.2. Перемещение курсора мыши……………………………………………………………………………… 440

20.9.3. Наведение и увод курсора мыши………………………………………………………………………. 441

20.9.4. Прокрутка колесика мыши………………………………………………………………………………… 441

20.9.5. Изменение курсора мыши………………………………………………………………………………….. 442

20.10. Операция перетаскивания (drag & drop)……………………………………………………………………… 443

20.10.1. Запуск перетаскивания…………………………………………………………………………………….. 443

20.10.1.1. Задание перетаскиваемых данных………………………………………………….. 445

20.10.2. Обработка перетаскивания и сброса……………………………………………………………… 446

20.11. Работа с буфером обмена…………………………………………………………………………………………….. 448

20.12. Фильтрация событий……………………………………………………………………………………………………. 449

20.13. Генерирование событий………………………………………………………………………………………………. 450

20.14. Пользовательские события………………………………………………………………………………………….. 450

Глава 21. Размещение компонентов в окнах. Контейнеры…………………… 451

21.1. Абсолютное позиционирование……………………………………………………………………………………. 451

21.2. Контейнерыстопки………………………………………………………………………………………………………… 452

21.3. Контейнер-сетка……………………………………………………………………………………………………………… 455

21.4. Контейнер-форма……………………………………………………………………………………………………………. 457

21.5. Стеки………………………………………………………………………………………………………………………………… 460

21.6. Управление размерами компонентов……………………………………………………………………………. 461

21.7. Группа……………………………………………………………………………………………………………………………… 462

21.8. Панель с рамкой……………………………………………………………………………………………………………… 464

21.9. Панель с вкладками………………………………………………………………………………………………………… 465

21.10. Аккордеон……………………………………………………………………………………………………………………… 469

21.11. Панель с изменяемыми областями………………………………………………………………………………. 471

21.12. Прокручиваемая панель………………………………………………………………………………………………. 473

Глава 22. Основные компоненты…………………………………………………………. 475

22.1. Надпись……………………………………………………………………………………………………………………………. 475

22.2. Кнопка……………………………………………………………………………………………………………………………… 477

22.3. Переключатель……………………………………………………………………………………………………………….. 479

22.4. Флажок…………………………………………………………………………………………………………………………….. 480

22.5. Поле ввода……………………………………………………………………………………………………………………….. 480

22.5.1. Основные методы и сигналы……………………………………………………………………………… 481

22.5.2. Ввод данных по маске………………………………………………………………………………………… 484

22.5.3. Контроль ввода с помощью валидаторов………………………………………………………… 485

22.6. Область редактирования……………………………………………………………………………………………….. 486

22.6.1. Основные методы и сигналы……………………………………………………………………………… 486

22.6.2. Задание параметров области редактирования……………………………………………….. 488

22.6.3. Указание параметров текста и фона…………………………………………………………………. 490

22.6.4. Класс QTextDocument…………………………………………………………………………………………. 491

22.6.5. Класс QTextCursor………………………………………………………………………………………………. 494

22.7. Текстовый браузер………………………………………………………………………………………………………….. 497

22.8. Поля для ввода целых и вещественных чисел……………………………………………………………… 499

22.9. Поля для ввода даты и времени…………………………………………………………………………………….. 501

22.10. Календарь……………………………………………………………………………………………………………………… 504

22.11. Семисегментный индикатор………………………………………………………………………………………… 506

22.12. Индикатор процесса…………………………………………………………………………………………………….. 507

22.13. Шкала с ползунком………………………………………………………………………………………………………. 508

22.14. Круговая шкала с ползунком………………………………………………………………………………………. 510

22.15. Полоса прокрутки…………………………………………………………………………………………………………. 511

22.16. Веб-браузер…………………………………………………………………………………………………………………… 511

Глава 23. Списки и таблицы………………………………………………………………… 516

23.1. Раскрывающийся список………………………………………………………………………………………………… 516

23.1.1. Добавление, изменение и удаление элементов………………………………………………… 516

23.1.2. Изменение параметров списка…………………………………………………………………………… 517

23.1.3. Поиск элементов…………………………………………………………………………………………………. 518

23.1.4. Сигналы……………………………………………………………………………………………………………….. 519

23.2. Список для выбора шрифта…………………………………………………………………………………………… 519

23.3. Роли элементов……………………………………………………………………………………………………………….. 520

23.4. Модели…………………………………………………………………………………………………………………………….. 521

23.4.1. Доступ к данным внутри модели………………………………………………………………………. 521

23.4.2. Класс QStringListModel……………………………………………………………………………………… 523

22.4.3. Класс QStandardItemModel………………………………………………………………………………… 524

23.4.4. Класс QStandardItem………………………………………………………………………………………….. 528

23.5. Представления………………………………………………………………………………………………………………… 531

23.5.1. Класс QAbstractItemView……………………………………………………………………………………. 532

23.5.2. Простой список…………………………………………………………………………………………………… 535

23.5.3. Таблица……………………………………………………………………………………………………………….. 537

23.5.4. Иерархический список……………………………………………………………………………………….. 539

23.5.5. Управление заголовками строк и столбцов……………………………………………………… 541

23.6. Управление выделением элементов………………………………………………………………………………. 544

22.7. Промежуточные модели…………………………………………………………………………………………………. 546

23.8. Использование делегатов………………………………………………………………………………………………. 547

Глава 24. Работа с базами данных……………………………………………………….. 551

24.1. Соединение с базой данных…………………………………………………………………………………………… 551

24.2. Получение сведений о структуре таблиц……………………………………………………………………… 554

24.2.1. Получение сведений о таблицах……………………………………………………………………….. 554

24.2.2. Получение сведений о полях таблиц………………………………………………………………… 555

24.2.3. Получение сведений о ключевом индексе………………………………………………………… 556

24.2.4. Получение сведений об ошибке………………………………………………………………………… 556

24.3. Выполнение SQL-запросов и получение их результатов……………………………………………. 557

24.3.1. Выполнение запросов………………………………………………………………………………………… 557

24.3.2. Обработка результатов выполнения запросов………………………………………………… 560

24.3.3. Очистка запроса…………………………………………………………………………………………………. 562

24.3.4. Получение служебных сведений о запросе……………………………………………………… 563

24.4. Модели, связанные с данными………………………………………………………………………………………. 563

24.4.1. Модель, связанная с SQL-запросом………………………………………………………………….. 563

24.4.2. Модель, связанная с таблицей…………………………………………………………………………… 565

24.4.3. Модель, поддерживающая межтабличные связи…………………………………………….. 570

24.4.4. Использование связанных делегатов………………………………………………………………… 573

Глава 25. Работа с графикой………………………………………………………………… 575

25.1. Вспомогательные классы………………………………………………………………………………………………. 575

25.1.1. Класс QColor: цвет……………………………………………………………………………………………… 575

25.1.2. Класс QPen: перо………………………………………………………………………………………………… 579

25.1.3. Класс QBrush: кисть……………………………………………………………………………………………. 580

25.1.4. Класс QLine: линия…………………………………………………………………………………………….. 581

24.1.5. Класс QPolygon: многоугольник……………………………………………………………………….. 582

25.1.6. Класс QFont: шрифт…………………………………………………………………………………………… 584

25.2. Класс QPainter………………………………………………………………………………………………………………… 586

25.2.1. Рисование линий и фигур…………………………………………………………………………………… 587

25.2.2. Вывод текста……………………………………………………………………………………………………….. 589

25.2.3. Вывод изображений……………………………………………………………………………………………. 590

25.2.4. Преобразование систем координат…………………………………………………………………… 592

25.2.5. Сохранение команд рисования в файл……………………………………………………………… 593

25.3. Работа с растровыми изображениями………………………………………………………………………….. 594

25.3.1. Класс QPixmap……………………………………………………………………………………………………. 594

25.3.2. Класс QBitmap…………………………………………………………………………………………………….. 597

25.3.3. Класс QImage………………………………………………………………………………………………………. 598

25.3.4. Класс QIcon…………………………………………………………………………………………………………. 601

Глава 26. Графическая сцена……………………………………………………………….. 603

26.1. Графическая сцена…………………………………………………………………………………………………………. 603

26.1.1. Настройка графической сцены………………………………………………………………………….. 603

26.1.2. Добавление и удаление графических объектов……………………………………………….. 604

26.1.3. Добавление компонентов на сцену…………………………………………………………………… 605

26.1.4. Поиск графических объектов…………………………………………………………………………….. 605

26.1.5. Управление фокусом ввода……………………………………………………………………………….. 607

26.1.6. Управление выделением объектов……………………………………………………………………. 607

26.1.7. Прочие методы и сигналы………………………………………………………………………………….. 608

26.2. Графическое представление………………………………………………………………………………………….. 609

26.2.1. Настройка графического представления…………………………………………………………. 609

26.2.2. Преобразования между координатами представления и сцены…………………….. 611

26.2.3. Поиск объектов……………………………………………………………………………………………………. 612

26.2.4. Преобразование системы координат………………………………………………………………… 612

26.2.5. Прочие методы……………………………………………………………………………………………………. 613

26.3. Графические объекты…………………………………………………………………………………………………….. 614

26.3.1. Класс QGraphicsItem: базовый класс для графических объектов………………….. 614

26.3.1.1. Настройка графического объекта………………………………………………………. 614

26.3.1.2. Выполнение преобразований……………………………………………………………… 616

26.3.1.3. Прочие методы…………………………………………………………………………………….. 617

26.3.2. Готовые графические объекты………………………………………………………………………….. 618

26.3.2.1. Линия…………………………………………………………………………………………………….. 618

26.3.2.2. Класс QAbstractGraphicsShapeItem……………………………………………………. 618

26.3.2.3. Прямоугольник…………………………………………………………………………………….. 619

26.3.2.4. Многоугольник…………………………………………………………………………………….. 619

26.3.2.5. Эллипс…………………………………………………………………………………………………… 619

26.3.2.6. Изображение………………………………………………………………………………………… 620

26.3.2.7. Простой текст……………………………………………………………………………………….. 621

26.3.2.8. Форматированный текст……………………………………………………………………… 621

26.4. Группировка объектов……………………………………………………………………………………………………. 622

26.5. Эффекты…………………………………………………………………………………………………………………………… 623

26.5.1. Класс QGraphicsEffect………………………………………………………………………………………… 623

26.5.2. Тень………………………………………………………………………………………………………………………. 624

26.5.3. Размытие……………………………………………………………………………………………………………… 625

26.5.4. Изменение цвета………………………………………………………………………………………………….. 625

26.5.5. Изменение прозрачности……………………………………………………………………………………. 625

26.6. Обработка событий………………………………………………………………………………………………………… 626

26.6.1. События клавиатуры………………………………………………………………………………………….. 626

26.6.2. События мыши……………………………………………………………………………………………………. 627

26.6.3. Обработка перетаскивания и сброса………………………………………………………………… 630

26.6.4. Фильтрация событий………………………………………………………………………………………….. 631

26.6.5. Обработка изменения состояния объекта………………………………………………………… 631

Глава 27. Диалоговые окна………………………………………………………………….. 634

27.1. Пользовательские диалоговые окна……………………………………………………………………………… 634

27.2. Класс QDialogButtonBox………………………………………………………………………………………………… 636

27.3. Класс QMessageBox………………………………………………………………………………………………………… 639

27.3.1. Основные методы и сигналы……………………………………………………………………………… 640

27.3.2. Окно информационного сообщения………………………………………………………………….. 642

27.3.3. Окно подтверждения…………………………………………………………………………………………… 643

27.3.4. Окно предупреждающего сообщения……………………………………………………………….. 644

27.3.5. Окно критического сообщения………………………………………………………………………….. 644

27.3.6. Окно сведений о программе……………………………………………………………………………….. 645

27.3.7. Окно сведений о фреймворке Qt………………………………………………………………………… 645

27.4. Класс QInputDialog………………………………………………………………………………………………………… 646

27.4.1. Основные методы и сигналы……………………………………………………………………………… 647

27.4.2. Окно для ввода строки……………………………………………………………………………………….. 649

27.4.3. Окно для ввода целого числа…………………………………………………………………………….. 649

27.4.4. Окно для ввода вещественного числа……………………………………………………………….. 650

27.4.5. Окно для выбора пункта из списка……………………………………………………………………. 651

27.4.6. Окно для ввода большого текста………………………………………………………………………. 651

27.5. Класс QFileDialog…………………………………………………………………………………………………………… 652

27.5.1. Основные методы и сигналы……………………………………………………………………………… 653

27.5.2. Окно для выбора каталога…………………………………………………………………………………. 655

27.5.3. Окно для открытия файлов………………………………………………………………………………… 656

27.5.4. Окно для сохранения файла………………………………………………………………………………. 658

27.6. Окно для выбора цвета…………………………………………………………………………………………………… 659

27.7. Окно для выбора шрифта……………………………………………………………………………………………….. 660

27.8. Окно для вывода сообщения об ошибке……………………………………………………………………….. 661

27.9. Окно с индикатором хода процесса……………………………………………………………………………… 662

27.10. Создание многостраничного мастера………………………………………………………………………… 663

27.10.1. Класс QWizard…………………………………………………………………………………………………… 663

27.10.2. Класс QWizardPage………………………………………………………………………………………….. 667

Глава 28. Создание SDI- и MDI-программ…………………………………………….. 670

28.1. Главное окно программы……………………………………………………………………………………………….. 670

28.2. Меню и действия…………………………………………………………………………………………………………….. 675

28.2.1. Класс QMenuBar…………………………………………………………………………………………………. 675

28.2.2. Класс QMenu……………………………………………………………………………………………………….. 676

28.2.3. Контекстное меню компонента…………………………………………………………………………. 679

28.2.4. Класс QAction……………………………………………………………………………………………………… 680

28.2.5. Объединение действий-переключателей в группу…………………………………………… 683

28.3. Панели инструментов…………………………………………………………………………………………………….. 684

28.3.1. Класс QToolBar…………………………………………………………………………………………………… 685

28.3.2. Класс QToolButton……………………………………………………………………………………………… 686

28.4. Прикрепляемые панели………………………………………………………………………………………………….. 688

28.5. Строка состояния……………………………………………………………………………………………………………. 689

28.6. MDI-программы………………………………………………………………………………………………………………. 690

28.6.1. Класс QMdiArea………………………………………………………………………………………………….. 690

28.6.2. Класс QMdiSubWindow………………………………………………………………………………………. 693

28.7. Добавление значка программы в область уведомлений…………………………………………….. 694

Глава 29. Мультимедиа………………………………………………………………………… 696

29.1. Воспроизведение мультимедиа……………………………………………………………………………………… 696

29.1.1. Мультимедийный проигрыватель…………………………………………………………………….. 696

29.1.2. Звуковой выход. Воспроизведение звука…………………………………………………………. 699

29.1.3. Метаданные мультимедийного источника………………………………………………………. 704

29.1.4. Видеопанель. Воспроизведение видео……………………………………………………………… 707

29.2. Запись мультимедиа……………………………………………………………………………………………………….. 709

29.2.1. Транспорт……………………………………………………………………………………………………………. 709

29.2.2. Звуковой вход……………………………………………………………………………………………………… 710

29.2.3. Кодировщик звука и видео…………………………………………………………………………………. 710

29.2.4. Указание форматов кодирования. Запись звука………………………………………………. 712

29.2.5. Камера. Запись видео…………………………………………………………………………………………. 716

29.2.6. Кодировщик статичных изображений. Захват фото……………………………………….. 720

29.3. Воспроизведение звуковых эффектов……………………………………………………………………………. 722

Глава 30. Печать документов……………………………………………………………….. 726

30.1. Основные средства печати…………………………………………………………………………………………….. 726

30.1.1. Класс QPrinter…………………………………………………………………………………………………….. 726

30.1.2. Вывод на печать…………………………………………………………………………………………………. 729

30.1.3. Служебные классы……………………………………………………………………………………………… 735

30.1.3.1. Класс QPageSize…………………………………………………………………………………… 735

30.1.3.2. Класс QPageLayout……………………………………………………………………………… 737

30.2. Задание параметров принтера и страницы………………………………………………………………….. 739

30.2.1. Класс QPrintDialog…………………………………………………………………………………………….. 739

30.2.2. Класс QPageSetupDialog……………………………………………………………………………………. 740

30.3. Предварительный просмотр………………………………………………………………………………………….. 742

30.3.1. Класс QPrintPreviewDialog……………………………………………………………………………….. 742

30.3.2. Класс QPrintPreviewWidget……………………………………………………………………………….. 745

30.4. Класс QPrinterInfo: получение сведений об устройстве печати………………………………… 747

30.5. Класс QPdfWriter: экспорт в формат PDF…………………………………………………………………….. 749

Глава 31. Сохранение настроек программ……………………………………………. 752

31.1. Создание объекта класса QSettings………………………………………………………………………………. 752

31.2. Запись и чтение данных…………………………………………………………………………………………………. 753

31.2.1. Базовые средства записи и чтения данных………………………………………………………. 753

31.2.2. Группировка сохраняемых значений. Ключи………………………………………………….. 755

31.2.3. Запись списков……………………………………………………………………………………………………. 757

31.3. Вспомогательные методы класса QSettings…………………………………………………………………. 759

31.4. Где хранятся настройки?……………………………………………………………………………………………….. 759

Глава 32. Программа «Судоку»……………………………………………………………. 761

32.1. Правила судоку………………………………………………………………………………………………………………. 761

32.2. Описание программы «Судоку»…………………………………………………………………………………….. 762

32.3. Разработка программы…………………………………………………………………………………………………… 764

32.3.1. Подготовительные действия………………………………………………………………………………. 764

32.3.2. Класс MyLabel: ячейка поля судоку…………………………………………………………………. 764

32.3.3. Класс Widget: поле судоку………………………………………………………………………………… 768

32.3.3.1. Конструктор класса Widget………………………………………………………………… 769

32.3.3.2. Прочие методы класса Widget……………………………………………………………. 771

32.3.4. Класс MainWindow: основное окно программы………………………………………………. 775

32.3.4.1. Конструктор класса MainWindow……………………………………………………… 776

32.3.4.2. Остальные методы класса MainWindow……………………………………………. 779

32.3.5. Главный модуль………………………………………………………………………………………………….. 779

32.3.6. Копирование и вставка головоломок……………………………………………………………….. 780

32.3.6.1. Форматы данных…………………………………………………………………………………. 780

32.3.6.2. Реализация копирования и вставки в классе Widget…………………………. 780

32.3.6.3. Реализация копирования и вставки в классе MainWindow………………. 783

32.3.7. Сохранение и загрузка данных…………………………………………………………………………. 787

32.3.8. Печать и предварительный просмотр………………………………………………………………. 789

32.3.8.1. Реализация печати в классе Widget……………………………………………………. 790

32.3.8.2. Класс PreviewDialog: диалоговое окно предварительного просмотра 791

32.3.8.3. Реализация печати в классе MainWindow…………………………………………. 794

Заключение………………………………………………………………………………………….. 796

Приложение. Описание электронного архива………………………………………. 797

Предметный указатель…………………………………………………………………………. 798

Добавить комментарий