- PVSM.RU - https://www.pvsm.ru -

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

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

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

Новый выпуск принес смену лицензии, открытие кода проприетарных модулей, переход на C++11, стабилизация некоторых экспериментальных модулей, а также новые экспериментальные модули и удаление устаревших.

Выпуск фреймворка Qt 5.7 - 1

Смена лицензии

Начиная с версии 5.7, Qt больше не выпускается под LGPLv2.1. Теперь основные модули (Qt Essentials) доступны под LGPLv3 и GPLv2. Утилиты и средства разработки (в т.ч. Qt Creator) и новые модули теперь выпускаются под GPLv3. Эти изменения касаются только версии с открытым кодом и для пользователей коммерческой версии все остается как раньше.

Подробнее о смене лицензии можно почитать в этой статье [1].

Переход на C++11

После выпуска LTS-версии [2], появилась возможность прекратить поддержку устаревших компиляторов в новых версиях и начать активно использовать возможности C++11 в коде Qt. Список поддерживаемых платформ здесь [3].

С применением средств C++11, кодовая база была значительно почищена. QAtomic реализован при помощи std::atomic. Добавлено QTypeInfo для char16_t и char32_t.

Для использования контейнеров Qt в range for добавлена специальная функция qAsConst [4].

Открытие кода проприетарных модулей

Начиная с Qt 5.7, версия с открытым кодом и проприетарная идентичны. Под лицензией GPLv3 в версии с открытым кодом добавлены следующие модули:

  • Qt Charts
  • Qt Data Visualization
  • Qt Virtual Keyboard
  • Qt Quick 2D renderer
  • Qt Purchasing (также доступна под LGPLv3)

Выпуск фреймворка Qt 5.7 - 2

Единственное исключение — Qt Quick Compiler, который планируется интегрировать в Qt 5.8.

В Qt Creator 4.0 добавлены следующие возможности из проприетарной версии:

  • QML Profiler
  • Clang static analyzer
  • Qt Test Integration

Qt Quick Controls 2

Qt Quick Controls 2.0 — это новая реализация [5] библиотеки компонентов для создания пользовательского интерфейса при помощи Qt Quick.
Доступный в виде предварительной версии в Qt 5.6 (под именем Qt Labs Controls), этот модуль теперь входит в состав Qt. Новая версия более легковесная и оптимизирована для использования на встраиваемых устройствах, построена по принципу шаблонов, позволяющих полностью изменить внешний вид компонентов и имеет, помимо стандартной темы, поддержку стилей Material и Universal.

Немного скромного самопиара :)

В качестве примера приложения с интерфейсом на Qt Quick Controls 2.0, можно посмотреть мой таймтрекер с открытым исходным кодом [6].

Qt 3D

Доступный в качестве предварительной версии в двух предыдущих выпусках, Qt 3D включен [7] в состав Qt. Это 3D-движок с API на C++ и QML, позволяющий встроить в приложение 3D-контент. Помимо рендеринга, доступно использование устройств ввода в трехмерном пространстве, включая такие специализированные устройства, как 3D-мыши, геймпады, джойстики и все, что работает с Qt Gamepad. Существует также тестовая версия библиотеки геометрических примитивов, материалов и прочих утилит Qt3DExtras и Qt 3D Scene Editor — концепт редактора трехмерных сцен с возможностью импорта в QML.

Qt Creator 4.0

В состав входит и новая версия [8] интегрированной среды разработки для Qt. Помимо уже упомянутых возможностей из проприетарной версии, в Qt Creator 4.0 улучшили поддержку проектов на CMake и Qt Quick Designer, объединили режимы отладки и профилирования, добавили новую плоскую тему и новый режим профилирования QML — Flamegraph.

Выпуск фреймворка Qt 5.7 - 3

Qt for Device Creation

В Qt for Device Creation добавлен функционал OTA-обновлений [9], возможность использования Windows для разработки и поддержка QNX. Windows Embedded больше не поддерживается. Проведена работа по приведению Qt for Device Creation к совместимости с Yocto Project.

Подробнее про изменения Qt for Device Creation можно прочитать в блоге [10].

Новые модули

Добавлена предварительная версия модуля Qt Wayland Compositor [11], позволяющего реализовать собственный композитор Wayland. Модуль нацелен на использование во встраиваемых устройствам, которым требуется поддержка нескольких одновременно работающих приложений. API модуля на C++ и QML, также есть API для создания расширений Wayland на C++ и QML.

Также в состав Qt 5.7 включена предварительная версия модуля Qt SCXML, который позволяет использовать конечные автоматы SCXML.

В Qt 5.7 входит предварительная версия Qt Gamepad, позволяющего работать с геймпадом из C++ и QML. Поддерживаются Windows, Linux, Android и iOS.

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

  • В Qt Core тепперь используется poll() вместо select(), что позволяет обрабатывать более 1024 открытых файловых дескрипторов. Добавлена поддержка нескольких каналов в QIODevice.

  • Qt QML получил поддержку JIT на WinRT и 64-битных ARM, возможность отладки нескольких QJSEngine одновременно, улучшения в отладчике и профилировщике.

  • В Qt GUI задействованы оптимизации NEON для масштабирования изображений, оптимизированы обертки для функций OpenGL и ускорена [12] работа с иконками из тем при помощи кэша GTK+.

  • Движок Chromium в Qt WebEngine обновлен до версии 49 и получил поддержку печати в PDF, drag'n'Drop и проигрывания защищенного DRM HTML5-видео, при помощи плагина Widevine.

  • В Qt Multimedia улучшено QML API Playlist, а также добавлена поддержка tvOS.

  • Добавлена тестовая поддержка периферийной роли BLE для Qt Bluetooth (только при использовании Bluez в качестве бекенда).

  • В Qt Sensors добавлен iio-sensor-proxy бекенд для Linux.

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

Модули Qt Script и Qt Enginio удалены из поставки.

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

  • Минимальные версии мобильных платформ увеличены до iOS 7 и Android 4.1.
  • В Qt for Device Creation Добавлена поддержка следующих устройств:
    • Платы NVIDIA DRIVE CX (Tegra X1, 64 bit ARM)
    • The Rasberry Pi 3 (32-битный рехим)
    • Устройства, основанные на i.MX7 (с использованием фреймбуфера и Qt Quick 2D renderer)

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

Автор: BlackRaven86

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/135806

Ссылки в тексте:

[1] этой статье: https://habrahabr.ru/post/275725/

[2] LTS-версии: https://habrahabr.ru/post/279731/

[3] здесь: https://wiki.qt.io/Qt_5.7_Tools_and_Versions

[4] qAsConst: https://doc.qt.io/qt-5/qtglobal.html#qAsConst

[5] новая реализация: http://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning/

[6] таймтрекер с открытым исходным кодом: https://habrahabr.ru/post/301798/

[7] включен: https://blog.qt.io/blog/2016/06/16/introducing-qt-3d/

[8] новая версия: https://blog.qt.io/blog/2016/05/11/qt-creator-4-0-0-released/

[9] OTA-обновлений: https://blog.qt.io/blog/2016/05/31/over-the-air-updates-part-1-introduction/

[10] блоге: https://blog.qt.io/blog/2016/06/16/qt-5-7-for-device-creation/

[11] Qt Wayland Compositor: https://blog.qt.io/blog/2016/06/13/new-compositor-api-qtwayland/

[12] ускорена: https://woboq.com/blog/qicon-reads-gtk-icon-cache-in-qt57.html

[13] Анонс выпуска в блоге Qt: https://blog.qt.io/blog/2016/06/16/qt-5-7-released/

[14] Подробный список изменений: https://wiki.qt.io/New_Features_in_Qt_5.7

[15] Источник: https://habrahabr.ru/post/303498/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best