Узнать подробности и записаться на сайте школы на пробный бесплатный урок Сайт школы

Курс "C++. Инструментарий Qt" NEW

Школа LevelUp

Курс рассчитан на специалистов имеющих опыт программирования на языке C++

  • Цена
    42 990 руб.
  • Срок обучения
    3,5 месяца

Краткое содержание курса:

  1. Модуль 1. Qt введение. Использование инструментария Qt вне зависимости от среды разработки на примере MS Visual Studio. Базовые классы Qt для построения графического интерфейса в виде диалоговой формы. Qt Meta-Object System.
  2. Модуль 2. Использование MS Visual Studio в сочетании с плагином Qt-VS-Addin. Построение графического интерфейса как SDI и MDI. Работа с форматированным текстом. Архитектура Model/View, работа со списками, деревьями, таблицами.
  3. Модуль 3. Qt в Linux. Создание кроссплатформенного кода с помощью Qt Creator, qmake. Работа с потоками, сетью и базами данных.

Во время прохождения курса Вы получаете: 

  • Видео-записи каждого занятия курса
  • Дополнительные материалы
  • Возможность прохождения занятий как в аудитории (в режиме семинара), так и в режиме вебинара со своего компьютера. Это поможет вам не пропустить ни одного занятия. 
  • Вкусный чай и кофе во время перерывов 
  • После прохождения данного курса Вы сможете писать кросс-платформенные приложения на языке C++ с использованием Qt - самого совершенного и популярного кроссплатформенного фреймворка для C++. 

Программа обучения

Модуль 1

Занятие 1-1. Qt введение, программа "Hello World"

  • Вспоминаем предыдущие курсы
  • Перечень средств разработки
  • Настройка системы контроля версий для сдачи домашней работы
  • Qt вводная лекция
  • Настройка ОС и среды разработки
  • Модули QtCore, QtGui, QtWidgets
  • Программа "Hello World"
  • Сборка дистрибутива
  • Домашнее задание

Занятие 1-2. Базовые классы Qt для построения программы и графического интерфейса

  • Класс QObject
  • Класс QApplication
  • Класс QWidget
  • Геометрия окон
  • Стандартные элементы управления
  • Расположение элементов в диалоговой форме
  • QLayout и производные классы
  • Практика
  • Домашнее задание

Занятие 1-3. Qt Event System

  • Построение программы как цикл обработки сообщений
  • Класс QEventLoop
  • QEvent и производные классы
  • Обработка QEvent классами QObject и QWidget
  • Создание и отправка QEvent
  • Фильтрация QEvent
  • Использование таймеров
  • Практика
  • Домашнее задание

Занятие 1-4. Сигналы и слоты, Meta-Object Compiler

  • Сигналы и слоты
  • Различные способы соединения сигналов
  • Слоты, определение источника сигнала
  • Блокировка сигналов
  • Meta-Object Compiler
  • Практика
  • Домашнее задание

Занятие 1-5. Implicit sharing, Qt контейнеры

  • Разделение Identity vs Value
  • Технология Implicit Sharing
  • Классы Qt использующие Implicit Sharing
  • Создание своего класса с Implicit Sharing
  • Контейнеры в Qt
  • Адаптация своего класса для использования в контейнерах
  • Практика
  • Домашнее задание

Занятие 1-6. Qt Meta-Type system

  • Чтение и запись в потоки ввода/вывода
  • Классы QDataStream, QTextStream
  • Запись своего класса в QDataStream
  • Класс QVariant
  • Доступ к контейнерам внутри QVariant
  • Хранение своего класса внутри QVariant
  • Класс QMetaType
  • Подключение своего класса к QMetaType
  • Практика
  • Домашнее задание

Занятие 1-7. Qt Meta-Object system

  • Класс QObject, метаинформация
  • Создание своего класса с метаинформацией
  • Qt Property System
  • Объявление свойств внутри своего класса
  • Классы QMetaObject, QMetaProperty, QMetaMethod
  • Обращение к своему классу через meta-object system
  • Объявление Q_GADGET
  • Практика
  • Домашнее задание

Занятие 1-8. Работа с файлами

  • Классы QFile и QDir
  • Префиксы поиска файлов
  • Qt Resource System
  • Resource Compiler
  • Сохранение состояния программы
  • Класс QSettings
  • Практика
  • Домашнее задание

Занятие 1-9. Qt Linguist

  • Перевод интерфейса в Qt
  • Правила написания кода для выполнения перевода
  • Подключение словарей
  • Утилиты lupdate, lrelease
  • Qt Linguist
  • Создание перевода
  • Практика
  • Домашнее задание

Занятие 1-10. Qt Designer

  • Редактор форм Qt Designer
  • User Interface Compiler
  • Практика
  • Домашнее задание

Модуль 2

Занятие 2-1. Single Document Interface

  • Использование плагина Qt-VS-Addin
  • Класс QMainWindow
  • Рабочая зона с одним документом
  • Главное меню, классы QMenu и QMenuBar
  • Класс QAction и горячие клавиши
  • Панель инструментов QToolBar
  • Строка состояния QStatusBar
  • Практика
  • Домашнее задание

Занятие 2-2. Multiple Document Interface

  • Рабочая зона с несколькими документами
  • Классы QMdiArea и QMdiSubWindow
  • Летающая панель QDockWindow
  • Классическая компоновка меню Файл/Вид
  • Класс QFileDialog, функция getOpenFileName
  • Список недавно открытых файлов
  • Показ и сокрытие частей интерфейса
  • Сохранение состояния интерфейса
  • Практика
  • Домашнее задание

Занятие 2-3. Работа с форматированным текстом

  • Классы QTextEdit и QPlainTextEdit
  • Класс QTextDocument, структура документа
  • Класс QTextCursor, изменение документа
  • Поддержка HTML
  • Буфер обмена QClipboard
  • Классическая компоновка меню Правка
  • Вывод на печать
  • Практика
  • Домашнее задание

Занятие 2-4. Model/View введение, готовые классы

  • Архитектура Model/View
  • Модели, элементы и индексы
  • Готовые классы моделей
  • Представления
  • Выделение элементов
  • Изменение элемента, delegates
  • Готовые классы отображения дерева, таблицы
  • Практика
  • Домашнее задание

Занятие 2-5. Model/View, создание своих классов

  • Proxy модели
  • Сортировка и фильтрация
  • Drag and Drop
  • Класс QAbstractItemModel
  • Создание своей древовидной модели
  • Использование своей модели в QTreeView
  • Создание своего delegate редактора
  • Практика
  • Домашнее задание

Занятие 2-6. Qt Undo-Redo Framework

  • Процесс изменения документа как последовательность команд
  • Класс QUndoCommand
  • Класс QUndoStack
  • Класс QUndoGroup
  • Создание своего документа с механизмом Undo-Redo
  • Практика
  • Домашнее задание

Занятие 2-7. Qt Graphics View Framework

  • Архитектура Graphics View, 2D графика
  • Сцена QGraphicsScene
  • Графические элементы QGraphicsItem
  • Готовые классы графических элементов
  • Система координат
  • Представление QGraphicsView
  • Захват изображения, печать
  • Практика
  • Домашнее задание

Занятие 2-8. Графики Qt Charts

  • Модуль QtCharts
  • Классы QChart и QChartView
  • Гистограмма QBarSeries
  • Классы QLineSeries и QSplineSeries
  • Легенда
  • Оси координат
  • Интерактивные графики
  • Практика
  • Домашнее задание

Занятие 2-9. Большая практика: программа mini-excel

  • Multiple Document Interface
  • Классическая компоновка меню Файл/Правка/Вид
  • Классическая компоновка панели инструментов
  • Работа с файлами, открыть/сохранить, список недавних
  • Редактор таблиц с помощью Model/View
  • Добавление функций Undo-Redo
  • Анализ формул с помощью регулярных выражений
  • Построение графиков по данным из таблиц
  • Домашнее задание

Занятие 2-10. Большая практика: программа mini-excel

  • Продолжение предыдущего занятия
  • Сборка дистрибутива
  • Dependency Walker Tool
  • Windows Deployment Tool
  • MSVC Redistributable
  • Проверка программы на тестовой виртуальной машине

Модуль 3

Занятие 3-1. Qt Creator, qmake

  • Утилита qmake
  • Создание файлов проекта *.pro
  • Преобразование файла проекта в формат MSVS
  • Язык qmake
  • Использование Qt Creator
  • Утилита configure
  • Практика
  • Домашнее задание

Занятие 3-2. Qt XML Processing

  • XML документ
  • Чтение XML, класс QXmlStreamReader
  • Запись XML, класс QXmlStreamWriter
  • Классы представления XML как Document Object Model
  • Проверка XML, класс QXmlSchema
  • Практика
  • Домашнее задание

Занятие 3-3. Qt в Linux

  • Кроссплатформеннный код
  • Qt в Linux
  • Настройка ОС и среды разработки
  • Компиляция предыдущих программ
  • Определение путей к стандартным папкам
  • Системный трей, класс QSystemTrayIcon
  • Практика
  • Домашнее задание

Занятие 3-4. Базовые сетевые протоколы

  • Сетевая модель OSI
  • Модуль QtNetwork
  • Классы QHostAddress и QHostInfo
  • Протокол UDP, класс QUdpSocket
  • Протокол TCP, классы QTcpServer и QTcpSocket
  • Отсутствие в Qt служебных протоколов
  • Практика
  • Домашнее задание

Занятие 3-5. Сетевые протоколы верхнего уровня

  • Протоколы HTTP, FTP
  • Загрузка интернет страниц
  • Классы QNetworkAccessManager
  • Классы QNetworkRequest и QNetworkReply
  • JavaScript и протокол WebSocket
  • Классы QWebSocketServer и QWebSocket
  • Практика
  • Домашнее задание

Занятие 3-6. Большая практика: программа messenger

  • Кроссплатформенное оформление проекта
  • Пересылка xml-сообщений по сети
  • Обнаружение других запущенных messenger с помощью широкого вещания UDP
  • Отправка сообщений как TCP-клиент
  • Прием сообщений как TCP-сервер
  • Домашнее задание

Занятие 3-7. Использование СУБД

  • СУБД SQLite
  • Язык SQL
  • Модуль QtSql
  • Подключение к СУБД, класс QSqlDatabase
  • Выполнение запросов, класс QSqlQuery
  • Классы QSqlQueryModel и QSqlTableModel
  • Практика
  • Домашнее задание

Занятие 3-8. Работа с потоками

  • Процессы и потоки
  • Атомарные операции
  • Reentrancy and Thread-Safety
  • Привязка QObject к потоку
  • Создание потоков, класс QThread
  • Синхронизация потоков
  • Практика
  • Домашнее задание

Занятие 3-9. Большая практика: программа messenger

  • Определение повторного запуска программы
  • Классы QLocalServer и QLocalSocket
  • Вынос сетевого кода в отдельный поток
  • Сохранение истории сообщений в SQLite
  • Вложение файлов в сообщения
  • Домашнее задание

Занятие 3-10. Большая практика: программа messenger

  • Продолжение предыдущего занятия
  • Сборка Windows дистрибутива
  • Сборка Linux дистрибутива
  • Статическая линковка
  • Проверка программы на тестовой виртуальной машине
  • Проверка программы общением между Windows и Linux