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

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

Qt дозволяє розробляти програми за допомогою C++ і декларативної мови програмування QML, підтримує всі основні десктопні і мобільні платформи, а також деякі вбудовані і має відкритий вихідний код. Існує комерційна версія Qt, що містить додаткові пропріетарні модулі.

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

Зміна ліцензії

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

Докладніше про зміну ліцензії можна почитати в цій статті.

Перехід до C++ 11

Після випуску LTS-версії, з'явилася можливість припинити підтримку застарілих компіляторів в нових версіях і почати активно використовувати можливості C++ 11 в коді Qt. Список підтримуваних платформ тут.

З застосуванням засобів C++ 11, кодова база була значно почищена. QAtomic реалізований за допомогою std::atomic. Додано QTypeInfo для char16_t і char32_t.

Для використання контейнерів Qt в range for додано спеціальну функцію qAsConst.

Відкриття коду проприетарних додатків

Починаючи з Qt 5.7, версія з відкритим кодом і пропріетарна ідентичні. Під ліцензією GPLv3 у версії з відкритим кодом додано такі додатки:

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

Єдиний виняток - 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 - це нова реалізація бібліотеки компонентів для створення інтерфейсу користувача за допомогою Qt Quick.

Доступний у вигляді попередньої версії Qt 5.6 (під ім'ям Qt Labs Controls), цей модуль тепер входить до складу Qt. Нова версія більш легковагова і оптимізована для використання на вбудовуваних пристроях, побудована за принципом шаблонів, що дозволяють повністю змінити зовнішній вигляд компонентів і має, крім стандартної теми, підтримку стилів Material і Universal.

Трохи скромного самопіару:)

Як приклад програми з інтерфейсом Qt Quick Controls 2.0, можна переглянути мій таймтрекер з відкритим вихідним кодом.

Qt 3D

Доступний в якості попередньої версії в двох попередніх випусках, Qt 3D включений до складу Qt. Це 3D-рушій з API на C++ і QML, що дозволяє вбудувати в програму 3D-контент. Крім рендерінга, доступне використання пристроїв введення в тривимірному просторі, включаючи такі спеціалізовані пристрої, як 3D-миші, геймпади, джойстики і все, що працює з Qt Gamepad. Існує також тестова версія бібліотеки геометричних примітивів, матеріалів та інших утиліт Qt3DExtras і Qt 3D Scene Editor - концепт редактора тривимірних сцен з можливістю імпорту в QML.

Qt Creator 4.0

До складу входить і нова версія інтегрованого середовища розробки для Qt. Крім вже згаданих можливостей з пропріетарної версії, в Qt Creator 4.0 поліпшили підтримку проектів на CMake і Qt Quick Designer, об'єднали режими зневадження і профілювання, додали нову плоску тему і новий режим профілювання QML - Flamegraph.

Qt for Device Creation

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

Докладніше про зміни Qt for Device Creation можна прочитати в блозі.

Нові додатки

Додано попередню версію додатка Qt Wayland Compositor, що дозволяє реалізувати власний композитор 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 і прискорена робота з іконками з тем за допомогою кешу 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 Quick 1 і 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)

Додаткова інформація

  • Анонс випуску в блозі Qt
  • Докладний список змін