Pull to refresh

Выпуск фреймворка Qt 5.8

Reading time 4 min
Views 26K

Сегодня, спустя 7 месяцев с момента предыдущего значительного выпуска, вышла версия 5.8 кроссплатформенного фреймворка Qt.


Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.


В этом выпуске появилась новая система конфигурации, позволяющая включить в сборку только необходимый функционал (Qt Lite), стабилизация некоторых экспериментальных модулей, а также новые экспериментальные модули и удаление устаревших.



Qt Lite


В новой версии появилась возможность тонко настроить сборку Qt для включения только необходимого функционала. Для этого, была значительно переработана система конфигурирования. Пример использования Qt Lite для небольшого приложения на QML:



Qt QML и Quick


Значительные изменения коснулись движка QML:


  • Добавлена поддержка кэширования бинарного представления файлов QML и JavaScript, что позволяет уменьшить время запуска и потребление памяти движка. Коммерческий модуль Qt Quick Compiler продолжает поддерживаться в Qt 5.8 и его планируется объединить с новой подсистемой кэширования в будущем.


  • Подсистема Qt Quick Scene Graph была переработана с целью уменьшения зависимости от OpenGL. Это дало возможность добавить экспериментальную поддержку бэкенда на основе Direct3D 12, а также в будущем добавить поддержку других бэкендов, таких как Vulkan.


  • Интегрирован бэкенд для программного рендеринга (Qt Quick 2D Renderer), который до этого поставлялся отдельным модулем. Также в него была добавлена поддержка частичного обновления экрана, если изменилась только небольшая часть сцены.


  • Была проведена чистка кода обработки событий с мыши и тачпада и объединение их в новый внутренний класс QQuickPointerEvent, как основа для будущих улучшений.


  • В Qt Quick Controls 2 были добавлены hover-эффекты и поддержка в стилях Material и Universal темы "system", которая автоматически выбирает темную или светлую тему, в зависимости от настроек системы. Появилась поддержка hover-эффектов в стилях Material и Universal, а также ripple-эффектов в стиле Material. Были добавлены следующие компоненты: Dialog, DialogButtonBox, MenuSeparator, RoundButton и ToolSeparator.


  • В состав Qt Quick Controls 2 был добавлен экспериментальный модуль Qt Labs Platform, содержащий нативные для платформы компоненты QML. При отсутствии нативных компонентов на данной платформе, в качестве запасного варианта используется реализация на Qt Widgets. Модуль содержит следующие компоненты: ColorDialog, FileDialog, FolderDialog, FontDialog, Menu, MenuBar, MenuItem, MenuItemGroup, MenuSeparator, MessageDialog, StandardPaths и SystemTrayIcon.

Новые модули


  • Доступный в качестве предварительной версии в предыдущем выпуске, Qt Wayland Compositor включен в состав Qt. Это модуль позволяет создать собственный композитор Wayland при помощи C++ или QML. Модель включает в себя расширения XDG shell, WL Shell и IVI application, а также API для создания своих расширений Wayland на C++ и QML.


  • Включен в состав Qt и Qt SCXML, также доступный в качестве предварительной версии в предыдущем выпуске. Модуль позволяет использовать конечные автоматы SCXML.
    Также в Qt Creator 4.2 добавлена возможность редактировать диаграммы состояния.


  • В состав Qt принят модуль Qt Serialbus, позволяющий работать с шинами CAN и Modbus.


  • Добавлена предварительная версия модуля для синтеза речи Qt Speech. На macOS, Android и Windows используется нативный бэкенд, на Linux — Speech Dispatcher (libspeechd).


  • Также добавлена предварительная версия модуля Qt Network Authentication, реализующего аутентификацию по протоколам OAuth 1 и 2.

Изменения в существующих модулях


  • В Qt Network и Qt WebSockets добавлена поддержка шифрования TLS PSK. Также в Qt Network была добавлена поддержка настраиваемых параметров Diffie-Hellman и поддержка HTTP/2 в QNetworkAccessManager.


  • Движок Chromium в Qt WebEngine обновлен до версии 53 и получил поддержку печати веб-страниц. Было добавлено новое QML API для создания кастомных диалогов, всплывающих подсказок и контекстных меню. Добавлена поддержка проверки правописания при помощи Hunspell. Также была добавлена поддержка схем view-source: и некотрых chrome:. Версия для Windows теперь требует MSVC 2015 Update 2 или новее.


  • В Qt Charts добавлена возможность создавать диаграммы типа "японские свечи" (candlestick).


  • В Qt Bluetooth добавлена тестовая поддержка периферийной роли BLE для macOS и iOS и центральной роли для WinRT.


  • Для модуля Qt Multimedia появилась возможность преобразования громкости между логарифмической и линейной шкалой при помощи QAudio::convertVolume() (и соответствующего API в QML). Компонент VideoOutput в QML теперь поддерживает рендеринг кадров в формате YUV 4:2:2 (YUYV, UYVY). В бэкенд GStreamer для Linux добавлена возможность мониторинга видео с QCamera при помощи QVideoProbe.

Удаленные и устаревшие модули


  • Модуль Qt Quick 2D Renderer был интегрирован в Qt Quick и больше не поставляется в виде отдельного модуля.


  • Qt Script давно объявлен устаревшим но пока все еще входит в состав Qt.

Поддержка платформ


  • Для платформы Android добавлены маркеры выделения текста с меню редактирования для копирования/вставки.


  • Предварительная версия поддержки платформ tvOS и watchOS от Apple.


  • Добавлена поддержка предварительно откомпилированных заголовков (pre-compiled headers) для iOS.


  • Для iOS, tvOS и watchOS теперь используется одна и та же библиотека для симулятора и для устройства.


  • Поддержка поворота на 90 и 180 градусов программно-отрисованного контента (QWidget) для eglfs.

Дополнительная информация


Tags:
Hubs:
+39
Comments 65
Comments Comments 65

Articles