
- •Основы QML
- •План презентации
- •Технология Qt Quick
- •Qt Quick
- •QML: вложенные объекты, свойства, привязки
- •Элементы компонента QML
- •Глоссарий терминов QML
- •Базовые типы QML
- •Базовые типы, предоставляемые QtQuick
- •Основные визуальные типы
- •ITEM — базовый визуальный тип
- •Простой пример qml-кода
- •Тип Component
- •Примеры Component
- •Loader — загрузчик динамических элементов
- •Пример динамической загрузки компонентов
- •Rectangle — прямоугольник с рамкой
- •Пример прямоугольника
- •Пример прямоугольника с градиентом
- •Text — текст в заданном формате
- •Примеры форматированного текста
- •Image — изображение
- •Пример Image
- •Способы позиционирования элементов
- •Позиционирование вручную
- •Пример размещения вручную
- •Использование якорей
- •Пример использования якорей
- •Контейнеры
- •Пример вертикального контейнера
- •Пример горизонтального контейнера
- •Пример Flow
- •Пример сетки
- •Компоновки
- •Пример компоновки в строку и столбец
- •Пример компоновки таблицей
- •Пример компоновки стеком
- •Порядок отрисовки
- •Пример с наложением объектов
- •Пример использования Z-координаты
- •Описание свойств и методов
- •Привязывание свойств
- •Обработка сигналов
- •Canvas — двумерная графика
- •Простой пример рисования на Canvas
- •MouseArea — обработка нажатий
- •Пример кнопки
- •Пример простой рисовалки
- •Transform — трансформация элементов
- •Timer — периодические сигналы
- •Пример трансформаций с таймером
- •Состояния и анимации
- •Состояния и управление свойствами
- •Пример PropertyChanges
- •Анимации — постепенные изменения свойств
- •Способы использования анимаций
- •Анимации и переходы
- •Анимации на основе типов данных
- •Пример анимации изменения свойства
- •Пример анимации Behavior
- •Управление анимациями
- •Параллельные анимации
- •Последовательные анимации
- •Transition — анимации при переходах
- •Пример Transitions
- •Ресурсы для разработчиков в интернете
- •Вопросы?
- •Компоненты и модели
- •План презентации
- •Компоненты
- •Создание собственных QML-компонентов
- •Пример собственной кнопки
- •Пример файлов из одной директории
- •QML-тип Component
- •Создание компонента
- •Динамическое создание объектов
- •Loader — динамическая загрузка компонентов
- •Пример динамической загрузки компонента
- •Модели и представления
- •Repeater — дупликатор однотипных элементов
- •Пример заполнения таблицы с помощью Repeater
- •Модели и представления
- •Стандартные представления
- •Типы моделей
- •ListModel
- •Модель данных — список объектов
- •Пример с изменением модели
- •ObjectModel: свойства
- •ObjectModel: методы
- •ObjectModel: пример
- •XmlListModel
- •Пример модели xml
- •Javascript-модели. Список строк
- •Javascript-модели. Массивы
- •Javascript-модели. Целые числа
- •Модель списка на C++
- •Пример QabstractListModel
- •Ресурсы для разработчиков в интернете
- •Вопросы?
- •План презентации
- •QObject
- •Объектная модель Qt
- •Расширение C++ классов
- •Структура объявления класса
- •Метаобъектная система Qt
- •Регистрация класса для QML
- •Сигналы и слоты
- •Подключение и испускание сигналов
- •Регистрация свойств
- •Регистрация перечислений
- •Регистрация методов
- •Объявление визуального элемента
- •Пример рендеринга для QSG
- •Визуальный элемент, основанный на QPainter
- •Контейнеры
- •QVector
- •QByteArray
- •QList
- •QStack
- •QQueue
- •QMap
- •QHash
- •QSet
- •QString
- •QString: пример
- •QVariant
- •Ресурсы для разработчиков в интернете
- •Вопросы?
- •Компоненты UI
- •Окна и страницы
- •Qt Quick — технология разработки UI
- •ApplicationWindow — точка входа в приложение
- •Ориентации экрана
- •Окно приложения: ApplicationWindow в QQC2
- •Page — страница приложения
- •Страница: Page в QQC2
- •PageHeader — заголовок страницы
- •Ввод и вывод текста
- •Label — вывод текста
- •Вывод текста: Label в QQC2
- •TextField — ввод однострочного текста
- •Проверка ввода
- •InputMethodHint — виртуальная клавиатура
- •TextArea — ввод многострочного текста
- •TextField в QQC2
- •TextArea в QQC2
- •Элементы управления
- •Button — кнопка
- •ValueButton — кнопка с полем значения
- •IconButton — кнопка в виде иконки
- •Button в QQC2
- •DelayButton в QQC2
- •RadioButton в QQC2
- •Группировка радиокнопок в QQC2
- •RoundButton в QQC2
- •ToolButton в QQC2
- •Примеры переключателей
- •Switch в QQC2
- •Стек страниц
- •PageStack
- •Операции PageStack: push и pop
- •Операции PageStack: pushAttached
- •Стек страниц: StackView в QQC2
- •Пролистываемые вкладки: SwipeView в QQC2
- •Контейнеры
- •Контейнеры в Silica
- •SilicaFlickable — контейнер с прокруткой
- •Прокрутка в QQC2: ScrollBar
- •SilicaListView — список элементов
- •Контейнер-список в Silica: SilicaListView
- •Элемент списка в QQC2: ItemDelegate
- •Silicagridview — таблица
- •SlideshowView — слайдшоу
- •SilicaWebView — отображение веб-страниц
- •Меню
- •Меню Silica
- •PullDownMenu и PushUpMenu
- •ContextMenu
- •Контекстное меню в QQC2: Menu
- •Строка меню в QQC2: MenuBar
- •Диалоги
- •Диалоги в Silica
- •Вызов диалога со страницы
- •Диалоги в QQC2: Dialog
- •Стили
- •Silica: иконки действий
- •Размеры элементов в Silica
- •Размеры шрифтов в Silica
- •Цвета в Silica
- •Отступы в Silica
- •QQC2:стили
- •QQC2:файл конфигурации
- •Общие рекомендации по UI/UX
- •Рекомендации для Silica
- •Дополнительные источники
- •Тест
- •Работа с базой данных и локальными файлами
- •База данных по умолчанию
- •Начало работы с базой данных
- •Обращение к базе данных
- •Объект для работы с базой данных
- •Миграция базы данных
- •Запросы SELECT и DELETE
- •Запросы INSERT и UPDATE
- •Запрос с вычисляемым полем
- •Заполнение модели данных
- •Доступ к базам данных через C++
- •Работа с базой данных в C++
- •Запрос INSERT
- •QSqlQueryModel
- •Редактируемая модель QSqlTableModel
- •Классы для работы с файлами
- •QIODevice
- •QFile — работа с файлами
- •Пример чтения и записи в файл
- •QFileInfo
- •QDir — работа с каталогами
- •Пример работы с директорией
- •Файловая система ОС Аврора
- •FileModel —модель со списком файлов
- •Доступ к данным из StandardPaths
- •Пример StandardPaths
- •Pickers — компоненты для выбора файлов
- •Общие свойства для PickerPage
- •Пример выбора одного файла
- •Общие свойства для PickerDialog
- •Пример выбора нескольких файлов
- •Доступ к директориям
- •Директории для приложения
- •Общие директории пользователя
- •QML-модуль Share
- •ShareResource — тип для ресурсов
- •ShareAction — отправка данных
- •ShareProvider — получение данных
- •Пример Share: desktop-файл
- •Пример Share: функция main
- •Пример Share: ApplicationWindow
- •D-Bus-интерфейс sstore
- •Методы sstore
- •Мультимедиа
- •Мультимедийные функции устройств
- •Qt Multimedia — работа с мультимедиа
- •Компоненты и классы мультимедиа
- •Разрешения для работы с мультимедиа в ОС Аврора 4
- •SoundEffect — аудиоэффекты
- •Пример SoundEffect
- •Воспроизведение медиаконтента
- •VideoOutput — видео из медиаисточника
- •Пример Audio
- •Пример Video
- •Playlist — список воспроизведения
- •Пример PlayList
- •Кодеки
- •QAudioRecorder — запись аудио
- •Пример диктофона
- •Camera — получение изображений и видео
- •CameraCapture — управление захватом изображений
- •Пример работы с камерой
- •QML-плагин Thumbnailer
- •Thumbnail
- •Пример Thumbnail
- •QML-модуль QrFilter
- •QrCode — генерация кода
- •QrFilter — распознавание кода
- •Координаты и карты
- •Модуль QtPositioning
- •Типы Qt Positioning
- •Компоненты Qt Positioning
- •Разрешение для использования геолокации
- •Coordinate: географические координаты
- •Geoshape — географическая область
- •geocircle и georectangle
- •QtPositioning
- •Position — информация о местоположении
- •PositionSource — информация о текущей позиции
- •Пример компаса
- •NMEA-файл
- •Модуль QtLocation — отрисовка карты
- •Map — область карты
- •Plugin — настройка сервиса для карты
- •MapGestureArea — область обработки жестов
- •MapQuickItem — объекты карты
- •Пример отображения маршрута следования
- •Динамически созданный MapCircle
- •Плагин WebTiles: конфигурация
- •Плагин WebTiles
- •Плагин WebTiles в эмуляторе
- •Связь по tcp/ip
- •Модуль Qt Network
- •Разрешения
- •QNetworkAccessManager — менеджер запросов
- •QNetworkRequest — сетевой запрос
- •QNetworkReply — ответ на сетевой запрос
- •Пример отправки запроса и получения ответа
- •Qt WebSockets
- •Компоненты и классы Qt WebSocket
- •WebSocket — реализация сокета
- •Пример сокета
- •WebSocketServer — реализация сервера
- •XMLHttpRequest
- •Пример использования XMLHttpRequest
- •Пример получаемых данных
- •Пример обработки данных
- •Работа с датчиками
- •Qt Sensors
- •Компоненты и классы датчиков в Qt
- •Список доступных датчиков устройства
- •Sensor и QSensor — базовые реализации датчика
- •ProximitySensor — датчик приближения
- •LightSensor — датчик освещённости
- •AmbientLightSensor — датчик уровня освещённости
- •Accelerometer — датчик ускорений вдоль осей
- •Гироскоп
- •RotationSensor — датчик углов наклона вокруг осей
- •OrientationSensor — положение экрана устройства
- •Магнитометр
- •Компас
- •QSensorFilter — обработчик значений датчика
- •Классы фильтров
- •Процессы и потоки
- •Процессы и потоки в Qt
- •Потоки в приложении
- •Ресурсы потоков
- •Реентрабельность и потокобезопасность
- •Риски синхронизации
- •Реентрабельность и потокобезопасность функций
- •Реентрабельность и потокобезопасность классов
- •Реентрабельный класс
- •Потокобезопасный класс
- •QObject и наследники
- •QObject и наследники: ограничения
- •Доступ к наследникам QObject из других потоков
- •Поддержка потоков в модулях Qt
- •QThread
- •Многопоточность в Qt
- •Класс QThread
- •QThread: свойства, сигналы и методы
- •QThread: пример
- •QThread: пример реализации вторичного потока
- •QThread: пример наследования
- •QThreadPool и QRunnable: пример
- •Qt Concurrent
- •Работа с WorkerScript
- •WorkerScript: пример QML
- •WorkerScript: пример JS
- •WorkerScript: ограничения
- •Рекомендуемые решения для некоторых примеров
- •Сигналы и слоты в потоках
- •Цикл обработки событий потока
- •Очереди событий высокого уровня
- •Альтернативы потокам
- •Использование механизмов многопоточности
- •Тест
- •D-Bus — система межпроцессного взаимодействия
- •Сущности D-Bus
- •Типы аргументов методов D-Bus
- •Библиотеки для работы D-Bus
- •DBusInterface — доступ к службам
- •Получение списка служб D-Bus
- •Пример получения и передачи данных по D-Bus
- •Пример обработки сигналов D-Bus
- •DBusAdaptor — регистрация службы
- •Пример описания службы D-Bus
- •Push-уведомления
- •Работа с сервером Push-сообщений
- •Настройки приложения и сервера
- •Настройка push-демона
- •Пространство имён PushNotifications
- •Приложение-клиент
- •Собственный сервер
- •Отправка push-сообщений
- •Структура push-сообщения
- •Push-плагин в Аврора IDE
- •Запуск приложения без GUI
- •Создание сервиса
- •Управление аргументами командной строки
- •Запуск приложения
- •Пример desktop-файла
- •Приложение-отправитель запросов
- •Библиотеки и поддиректории
- •Использование библиотек
- •Пример для создания библиотеки
- •Создание динамической библиотеки
- •Динамическая библиотека
- •Подключение динамической библиотеки
- •Подключение статической библиотеки
- •Проект с поддиректориями
- •Проект с поддиректориями: создание
- •Переменная subdirs
- •subdirs: модификаторы
- •subdirs: использование модификаторов
- •Тест
- •Публикация ПО
- •Локализация приложения
- •Работа с переводами в QML
- •Перевод дат и чисел
- •Установочные пакеты
- •Сборка и запуск проекта
- •Файл проекта для ОС Аврора
- •Тип проекта и библиотеки
- •Дополнительные возможности qmake
- •Подписание установочных пакетов
- •Выпуск сертификата
- •Публичные ключевые пары
- •Программа-валидатор rpm-файлов
- •Проверяемые требования
- •Общие требования к rpm-пакетам
- •Имя приложения
- •Файлы .spec/.yaml
- •Модули QML
- •Значок приложения
- •Разделяемые библиотеки
- •Использование модулей qt
- •Openrepos.net
- •Openrepos. Регистрация
- •Тест

ОСНОВЫ QML
РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ
ПЛАН ПРЕЗЕНТАЦИИ
1.Технология Qt Quick
2.Основные визуальные типы
3.Позиционирование элементов
4.Программирование логики
5.Состояния и анимации

ТЕХНОЛОГИЯ QT QUICK |
1 |

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ
QT QUICK
Технология быстрой разработки
›QML — язык разметки
»Декларативный
»Поддерживает вставки на «JavaScript»
»Доступны свойства объектов C++
›QML Engine — интерпретатор QML
›QtQuick — общие компоненты QML,
поставляемые Qt
import QtQuick 2.0
› QtQuick Controls 2 — сенсорные компоненты UI
import QtQuick.Controls 2.0
› Silica — компоненты UI для ОС Аврора и Sailfish OS
import Sailfish.Silica 1.0
Сторонние компоненты QML
|
Kirigami |
Ubuntu |
|
Components |
|
QtQuick |
|
|
|
Silica |
|
|
|
QQC2 |
QML Engine
Операционная система / Аппаратное обеспечение
doc.qt.io/qt-5/qmlapplications.html