23-го января Qt Company анонсировала выпуск Qt 5.8, с рядом нововведений, которые носят достаточно глобальный характер. Давайте ознакомимся с ними.
Qt Lite
Одной из главных тематик Qt 5.8 стало сделать так, чтобы Qt был более гибким и лёгким к адаптации к целям пользователей, в частности для разработчиков встраиваемых систем. Qt Lite является кодовым именем проекта, целью которого является внедрение данных целей.
Целью разработчиков Qt Company стало сделать Qt проще в настройке под нужды разработчиков с избеганием использования функционала, который не требуется в проекте. Это приносит значительную экономию в размере скомпилированных библиотек Qt и разрабатываемого приложения.
Внедряемая система является длинным путешествием, где была переписана значительная часть системы, которая отвечает за конфигурирование Qt. Эта новая система очищена от того, что наросло за последние 15 лет, и это также может привести к несоответствиям с тем, как Qt был сконфигурирован на различных платформах.
Как результат, получена одна унифицированная система для настройки различных частей Qt. В дополнение пользователям даётся более гибкая в настройке библиотека Qt. И также призвана облегчить бремя разработчиков Qt Company в поддержке всех различных способов настройки и использования Qt.
Использование новой системы позволит создать сборку Qt, которая подходит для конкретного случая. Можно будет отказаться от того функционала, который не требуется, что позволит сохранить ПЗУ и ОЗУ при развёртывании приложения на встраиваемом устройстве. Чтобы показать идею о возможностях сохранения ресурсов, ниже приведено изображение, которое показывает запросы Qt стека при запуске небольшого приложения на QML:
Как вы можете видеть, новая система настройки позволяет значительно уменьшить размер и сохранить более чем 60% в размере бинарника по сравнению с Qt 5.6.
Qt Wayland Compositor
API Qt Wayland Compositor , которое было включено как технология на предварительном ревью в Qt 5.7, теперь полностью поддерживается в Qt 5.8. Модуль позволяет легко создавать свой собственный Wayland Compositor.
Qt Wayland Compositor позволяет легко внедрять ваше собственный домашний экран (home screen) и менеджер приложений. Это позволяет создание мощных и гибких встраиваемых систем, где Вы имеете несколько приложений, которые имеются свои собственные пользовательские интерфейсы. Qt Wayland Compositor поддерживает обработку несколько экранов лёгкими и прозрачными способами. Это возможно как с QML так и C++ API.
Для большей информации смотрите API documentation и and примеры .
Communication и Networking
Qt Serialbus сейчас внедрена полностью в Qt 5.8. Это позволяет использовать Qt API для связи и протоколам по последовательным интерфейсамs. В то время, как существует множество различных API, эта версия включает CAN и Modbus.
Qt Network и Web Sockets полностью поддерживают TLS PSK. Qt Network сейчас поддерживает настраиваемые параметры Diffie-Hellman и HTTP/2 в QNetworkAccessManager .
Qt Bluetooth поддерживает периферийные устройства BTLE под macOS и iOS, а также поддерживает центральные устройства BTLE в WinRT.
В Qt 5.8 также добавлен новый модуль Qt Network Authorization как предварительная технология на предварительном ревью, и в данный момент поддерживает OAuth 1 и 2 схемы аутентификации.
Qt QML и Quick
Довольно много вещей произошло в Qt QML и Qt Quick. Движок QML получил поддержку кеширования бинарных данных QML и JS на диске, что снижает скорость запуска и потребление памяти движком. Только коммерческая версия компилятора Qt Quick пока что поддерживается в Qt 5.8, но планируется вливание этих изменений в будущем для улучшения производительности и более интегрированных решений.
Qt Quick scene graph претерпела значительные изменения, что позволяет уменьшить зависимость от OpenGL. Это позволяет добавить экспериментальную поддержку бэкэнда Direct3D 12 для Qt Quick, а включить создание других бэкэндов, базирующихся, например, на Vulkan Graphics API.
В дополнение, сейчас графическая сцена поддерживает частичное обновление экрана, если только малая часть была изменена. Это даёт немного большую производительность для Qt Quick 2D отрисовки.
Также эти изменения в графической сцене представлены как возможность перенести функционал отрисовки Qt Quick 2D непосредственно в Qt Quick. Это означает, что отрисовщика Qt Quick 2D больше не существует, как отдельного модуля в Qt 5.8.
Большие изменения были сделаны также под капотом обработки событий от мыши и сенсорных событий, объединяя их в новом классе QQuickPointerEvent. Это закладывает основу для будущего улучшения обработки событий мыши и сенсора, но не влияет на данный момент на код, использующий Qt Quick.
Qt Quick Controls 2 также получили несколько новых типов, таких как диалоговые окна, округлые кнопки и разделители инструментов. Стили Material и Universal некоторые новые эффекты и поддержку системной темы.
Qt Webengine
Как всегда версия Chromium, используемся Qt Webengine была обновлена до версии 53. Одной важной отличительной чертой является добавление поддержки печати Web страниц. Также было добавлено много небольших функциональных изменений, среди них новый QML API для определения пользовательских диалогов, всплывающих подсказок и контекстных меню, и поддержка просмотра исходного кода страница.
Qt SCXML
Qt SCXML полностью поддерживает в Qt 5.8. Модуль делает тривиальную интеграцию SCXML основанную на машине состояний в Qt. Это опирается непосредственно на Qt Statemachine Framework , и расширяет его как с SCXML так и с C++ компилятором и запуском в рантайме, который позволяет загрузку SCXML основанного на машине состояний.
Вместе с модулем Qt SCXML, Qt Creator 4.2 получил поддержку редактирования графиков состояний.
Новые технологии в предварительном рассмотрении
Также в Qt 5.8 имеется новый функционал, который был выбран в качестве технологий на предварительном рассмотрении.
Qt сейчас компилируется как для Apple TV, так и для watchOS. В тоже время значительная часть функционала, поддерживаемая на iOS, также должна работать и на tvOS, watchOS поддержка ограничена не графическим функционалом Qt.
Qt Speech добавлен как новый модуль для поддержки преобразования текста в речь.
Другие улучшения
После первичного выпуска Qt 3D с Qt 5.7, силы были сфокусирована на доработке модуля. Было сделано большое количество исправлений и улучшения производительности для этого модуля.
Qt Charts получили графики типа Candlestick (Японская свеча), и также сделано API QOpenGLTextureBlitter API в публичном Qt Gui.
Встраиваемые платформы поддержали Qt для создания устройств с лучшей поддержкой многоэкранных системы с использованием eglfs QPA плагина и поддержкой экранов с развёрткой на 90/180 градусов.
Наконец, многие изменения произошли в базовом коде для улучшения использования функционала, предлагаемого C++11.
Источник Qt Blog