Сотрудник The Qt Company Ларс Кнолл (Lars Knoll) объявил о выходе новой версии фреймворка Qt 5.7.0 и интегрированной среды разработки Qt Creator 4.0.2, предназначенной для создания кроссплатформенных приложений.
Изменение политики лицензирования и открытие кода коммерческих компонентов
Фреймворк Qt уже давно разрабатывается как свободное программное обеспечение с открытым исходным кодом и The Qt Company полностью поддерживают этот метод разработки и взаимодействия с сообществом. Юридическое соглашение с KDE Free Qt Foundation гарантирует, что фреймворк Qt будет и далее оставаться свободным программным обеспечением.
В Qt 5.7 было немного подкорректировано лицензирование Open Source-версии фреймворка, чтобы привести его в соответствие с современной философией движения свободного программного обеспечения. Начиная с этой версии и далее, Qt будет доступен под двумя основными лицензиями: LGPLv3 (и GPLv2) для почти всех библиотек, входящих во фреймворк, и GPLv3 для различных инструментов, таких как, например, Qt Creator.
Изменение лицензии позволило унифицировать состав Qt: теперь Open Source-версия фреймворка и коммерческая версия одинаковы в наполнении. Начиная с Qt 5.7, оба пакета поставляются с идентичным содержанием. Это значит, что все ранее закрытые компоненты коммерческой версии доступны теперь в Open Source под GPLv3:
- Qt Charts (GPLv3);
- Qt Data Visualization (GPLv3);
- Qt Virtual Keyboard (GPLv3);
- Qt Purchasing (LGPLv3);
- Qt Quick 2D renderer (GPLv3).
Исключением является лишь Qt Quick Compiler: разработчики сообщили, что пока над ним ещё ведутся работы, и, скорее всего, он будет доступен под свободной лицензией в Qt 5.8, выход которого ожидается в октябре этого года.
Подробнее про политику лицензирования можно прочитать по этим ссылкам: Licensing Pages, Licensing FAQ, Пост в блоге qt.io.
C++11
Ранее вместе с Qt можно было использовать C++11 для написания приложений, но сам фреймворк при этом не использовал современные возможности C++ в угоду совместимости и переносимости. Теперь, с релизом LTS версии Qt 5.6 (поддержка которого будет осуществляться в течении трёх лет), разработчики начнут актуализировать кодовую базу Qt 5.7 в соответствии с современным стандартом C++.
Таким образом, с Qt 5.7 и далее будет требоваться компилятор, совместимый со стандартом C++11. Это позволит использовать внутри Qt такие полезные возможности, как константные выражения, move semantics, range-for
и auto
. Работа над этим уже идёт полным ходом и будет продолжаться в следующих версиях.
Qt 3D
Модуль Qt 3D, предварительно доступный для ознакомления в двух прошлых выпусках фреймворка, теперь достиг стабильного состояния и был добавлен в релиз. Qt 3D является дополнением библиотек Qt для работы с трёхмерной графикой (Qt OpenGL, Qt Canvas 3D и Qt Data Visualization) и позволяет создавать трёхмерные графические интерфейсы пользователя. Также фреймфорк позволяет работать с позиционированным звуком и физической моделью 3D-сцены. Qt 3D предоставляет в использование 3D-движок с API, доступным из C++ и QML, что позволяет без труда вставлять и обрабатывать 3D-контекст в Qt-приложениях. Созданием архитектуры и разработкой Qt 3D в основном занимался партнёр The Qt Company — KDAB. Получить более подробную информацию по Qt 3D можно в официальном блоге qt.io.
Qt Quick Controls 2
В Qt 5.7 вошла новая версия элементов пользовательского интерфейса, предназначенных для использования на мобильных и встраиваемых устройствах вместе с технологиями Qt Quick и QML. Как заверяют разработчики, Qt Quick Controls 2 был полностью реализован с нуля и стал намного производительнее и экономнее, чем Qt Quick Controls 1, который был изначально ориентирован для создания десктопных приложений и имел избыточную функциональность, неприемлемую для слабых устройств. Qt Quick Controls 1 по-прежнему доступен в Qt 5.7 и его можно и дальше использовать для разработки десктопных приложений, более того, Qt Quick Layouts отлично работает с обоими наборами элементов управления.
Qt Quick Controls 2 позволяет создать собственный набор элементов управления благодаря гибкой системе пользовательских стилей. Кроме того, Qt Quick Controls 2 содержит три предустановленных стиля, доступных на всех поддерживаемых платформах:
- Default — простой и минимальный стиль, который предлагает максимальную производительность;
- Material — стиль, основанный на рекомендациях руководства Google Material Design Guidelines;
- Universal — стиль, основанный на руководстве Microsoft Universal Design.
Дополнительную информацию можно получить в официальном блоге qt.io.
Новая функциональность в существующих модулях
Огромное количество изменений вошло в существующие библиотеки Qt, основные из них:
- Qt Core
- Использование
poll()
вместоselect()
в цикле событий позволяет работать с большим количеством файловых дескрипторов; - Qt теперь использует
std::atomic
для атомарных классов.
- Использование
- Qt Gui
- Оптимизации NEON для масштабирования изображений;
- Оптимизация обёрток для функций OpenGL.
- Qt QML и Quick
- Поддержка JIT для WinRT и 64-битных ARM-ов в Qt QML, улучшающая производительность;
- Отладчик теперь позволяет работать с несколькими экземплярами
QJSEngine
одновременно; - Улучшена интеграция профилировщика и анализатора.
- Qt WebEngine
- Qt WebEngine теперь базируется на Chromium 49 и может печатать в PDF;
- Поддержка DRM-защищённого видео в HTML5.
- Qt NFC
- Поддержка Android OS.
Посмотреть все вошедшие изменения в релиз можно здесь, а с известными ошибками ознакомиться можно здесь.
Qt для встраиваемых устройств
В Qt 5.7 «из коробки» поддерживается следующее оборудование:
- The NVIDIA DRIVE CX boards (Tegra X1, 64-битный ARM);
- The Rasberry Pi 3 (32-битный режим).
- Устройства на i.MX7 (без GPU, используется Linux framebuffer и программный рендерер Qt Quick).
В Microsoft Windows теперь возможно разрабатывать приложения для встраиваемых систем на Linux. Помимо этого, Qt 5.7 больше не будет поддерживать MS Windows Embedded. Заявлена полная поддержка QNX, включая предустановленные пакеты. Узнать больше об использовании Qt 5.7 для встраиваемых устройств можно в официальном блоге qt.io.
Qt Creator 4.0
Qt 5.7 поставляется в комплекте с Qt Creator 4.0.2, в котором реализована поддержка новых элементов пользовательского интерфейса Qt Quick Controls 2 и улучшена работа с инструментарием QML и компилятором Clang/LLVM. Подробнее можно посмотреть на видео. Список вошедших изменений в Qt Creator 4.0.2 можно посмотреть здесь.
Модули, представленные для ознакомления
Qt 5.7.0 содержит несколько новых модулей, представленных для ознакомления, которые впоследствии могут войти в релиз:
- Qt Wayland Compositor — на основе этого модуля можно легко создать собственный композитор Wayland, что будет полезно для встраиваемых устройств. Модуль поддерживает как QML, так и C++ API, подробнее о нём можно почитать здесь;
- Qt SCXML — совершенно новый модуль, для интеграции в Qt конечных автоматов в общем виде на основе диаграмм состояний Харела. Он опирается на фреймворк Qt StateMachine и позволяет загружать различные типы конечных автоматов;
- Qt Gamepad — позволяет взаимодействовать с игровыми устройствами на Windows, Linux, Android и iOS из QML и C++;
- Механизм обновления Qt Over-the-Air (OTA) для встраиваемых устройств, является важнейшей технологией в IoT, подробнее о его внедрении можно почитать здесь;
- Модуль Qt SerialBus теперь имеет поддержку CAN и Modbus.
Скачать подготовленные сборки Qt 5.7.0 и Qt Creator 4.0.2 можно с официального сайта www.qt.io/download.