Релиз Qt 5.4 и Qt Creator 3.3

Original author: Lars Knoll
  • Translation
Примечание переводчика: в оригинале очень много маркетинговых оборотов, и, похоже какой-то SEO в тексте. Я постарался местами убирать лишние повторы слова «Qt», но текст всё равно слегка слащав.
Про релиз Qt Creator 3.3 перевод.


Я рад сообщить, что Qt 5.4 выпущен сегодня (10 декабря) и уже доступен для скачивания с qt.io. Вместе с Qt 5.4, мы также выпускаем Qt Creator 3.3 и обновление для Qt для создания устройств под управлением встроенными Linux или Android.

Но сперва давайте о Qt 5.4. Один из главных акцентов, которые я бы хотел сделать на релезе — это Web-технологии, и мы можем показать вам много клевых штук.



Обновленная история Web

HTML5 и Web-технологии становились все важней последние годы, и мы провели последний год, разрабатывая новые возможности веба для Qt. Модуль Qt WebEngine результат достаточно долгого исследовательского проекта, в котором при «подружили вместе» движок Chromium и Qt. C Qt 5.4, он полностью поддерживатся на всех дестопных и встраиваемых платформах. Qt WebEngine дает вам легкий для использования API, чтобы встроить веб-содержимое как в приложениях на Qt Widgets, так и на Qt Quick.

Новый модуль Qt WebChannel дает простую связку между QML/C++ и HTML/Javascript. Что это значит? Это — гибридные приложения, которые использую как веб-технологии, так и возможности Qt. Обмен между обоими сторонами возможен благодаря использованию QObject-объектов в контексте выполнения Web-приложения. Это будет работать не только Qt WebEngine, но и с любым другим движком с поддержкой веб-сокетов (Websockets).

Третья вещь, о которой хочется сказать, это технологическое превью модуля Qt WebView. Этот модуль предоставляет более ограниченный API для встраивания нативного в ОС браузера, для тех случаев, когда не нужны все возможности Qt WebEngine, или когда это нельзя по причине ограничения самой платформы. В Qt 5.4 он будет поддерживать iOS и Android.

Вместе с Qt WebSockets, у нас теперь есть поддержка многих веб-технологий, которые позволяют легко взаимодействовать с контентом. Встраивание HTML5 в WebEngine и WebView, и WebSockets для легкого «общения» между Qt и вебом.

Qt Webkit остается в 5.4 по-прежнему и продолжает поддерживаться. Этот модуль признан готовым и стабильным, так что новой функциональности не ждите. Когда-нибудь мы объявим его устаревшим (deprecated). Рекомендуем переходить на WebEngine, ибо это достаточно просто. Так же, очевидно, лучше выбрать последний для новых проектов.

Qt для WinRT | завершение кросс-платформенности

Вторая группа новых возможностей релиза 5.4 это завершение поддержки основных платформ вместе с полноценной поддержкой Windows Runtime. Она уже была в бете Qt 5.3, но теперь она приблизилась к полноценной. Можно создавать приложения для Windows Store; в качестве целевой ОС можно выбрать либо Windows Phone 8.1+, либо Windows 8.1+.
Надеемся, что с этим портом вы заметите, что мы поддерживаем все актуальные десктопные, встраиваемые и мобильные ОС.

Обновления графики

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

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

Qt Data Visualization обновлен до версии 1.2, теперь включает такие штуки, как объемный рендер и поддержка текстур для графов глубин, а также улучшена производительность. Qt Charts обновлен до 2.0, вместе с лучшей модульностью и бинарными пакетами.

Другие улучшения по части графики это новый класс QOpenGLWidget, который идет на замену QGLWidget из Qt 4, и позволяет объявить устаревшим весь Qt OpenGL модуль целиком (у него классы начинаются с QGL* — прим. пер.). QOpenGLContext теперь может использовать и существующие нативные контексты. Вы можете использовать QQuickRenderControl чтобы отображать сцены Qt Quick в offscreen-буфере.

И, наконец, в 5.4 есть тех-превью нового модуля Canvas3D, который предоставляет API наподобие WebGL, но для Qt Quick.


Другие возможности

Рассмотрим и другие новые штуки, пришедшие вместе с Qt 5.4.

Qt поддерживает Bluetooth Low Energy под Linux используя BlueZ. Поддержку других платформ ждите в следующих релизах Qt. Bluetooth LE позволяет связываться с многими современными Bluetooth-устройствами вроде умных часов.

Под Android теперь есть нативно выглядящие Qt Quick Controls; также мы сделали меньшие по размеру деплой-пакеты и ускорили время запуска. Для iOS и Mac OS X, мы включили поддержку последних версий ОС, поддержку XCode 6 и нового способа подписи приложения для App Store. Также практически все проблемы со стилями для Mac OS X 10.10 исправлены.

В модуль Qt Qml добавлена поддержка Qt State Machines (можно использовать новый «QtQml.StateMachine»-импорт), а QtCore получил новый класс QStorageInfo который выводит информацию по дискам и разделам.

В Quick Controls мы добавили новый «плоский(flat) стиль», доступный для всех платформ.

В Qt 5.4 помимо этого, включена новая версия IDE Qt Creator 3.3. Для подробностей — читайте отдельный пост.

Qt для создания устройств (встраиваемых)

Сегодня мы представляем новую версию средства для создания устройств. Что в него включено:

Предварительная поддержка для запуска приложений Qt под Wayland используя композитор Weston на i.MX6-устройствах, включая поддержку видео и Qt WebEngine.

Мы добавили модуль «B2Qt Utils» (boot 2 qt, видимо), который дает простой доступ к настройкам устройства, вроде подсветки дисплея, сетевого имени или состояния заряда как со стороны С++, так и QML. Модуль B2Qt Wi-Fi официально поддерживается и позволяет легко настроить беспроводную сеть.

Список прочих улучшений:

-Обновление плагина eAndroid Qt Multimedia. Реализация Qt Multimedia для Android отрефакторена, код чище и дальше будет легче поддерживать;
-SD Card Flashing Wizard для создания образов b2qt;
-Улучшения в BYOS (Build Your Own Stack);
-eLinux: поддержка камеры для i.MX6-устройств.

Мы также добавили новую аппаратные платформы, включая low-end-профиль для лишенного GPU Freescale Vybrid. Остальные референсные платформы могут быть найдены в документации.

Qt Quick без OpenGL

Другая классная вещь для встраиваемых решения это новый модуль рендера 2D в Qt Quick. Это новый коммерческий аддон позволяет использовать Qt Quick там, где нет аппаратного ускорения OpenGL, используя софтверный рендер либо аппаратное 2D ускорение (вроде DirectFB или Direct2D). Поддерживается почти все, кроме частиц и OpenGL шейдеров.

Переход на LGPL v3

Как и обещалось ранее, опенсорсная версия для 5.4 также доступна под лицензией LGPLv3. Новая опция лицензирования позволяет Qt Company представлять новые компоненты для целой экосистемы Qt без компромиссов для бизнеса. Помимо этого, свобода других разработчиков будет защищена от тивоизации (или lock-down).

Некоторые модули, правда, доступны ТОЛЬКО под GPL/LGPLv3 или коммерческой лицензиями — WebEngine,WebView и Canvas 3D.

Спасибо сообществу Qt

Но все это мы не смогли бы сделать без той огромной поддержки сообщества — людей и компаний, которые вкладывались в развитие Qt, не получая за это деньги. Всем спасибо!
Попробуйте Qt 5.4, www.qt.io/download

Про релиз Qt Creator 3.3 перевод.
Share post

Comments 25

    0
    Qt Quick без OpenGL

    1) А как включить софтверный рендерер в QML?
    2) А как же кастомные компоненты (написанные на С++, расширяющие QQuickItem) будут, извините, работать при влюченном софтваном рендерере? [напомню что QQuickItem возвращает текстуру, а на текустуре обычно малюют с помощью QOpenGLFunctions, которые есть по сути OpenGL ES 2.0]

    Как оно вообще работает? Можно где то по конкретнее об этом почитать?
      0
      Видимо, никак. Я так понял это про писалово на чистом QML. Я Qt, в основном, использую в частях не связанных с Qt Quick — это QtSql, QtNetwork, виджеты, Qt Script… поэтому надеюсь, что кто-то еще проконсультирует.
        0
        добавил ссылку в статью из исходного поста: doc.qt.io/QtQuick2DRenderer/index.html
        (простите мою лень, там текст в оригинале пестрел ссылками, я не все продублировал).
          0
          doc.qt.io/QtQuick2DRenderer/index.html:
          Available under certain Qt licenses.

          Дык оно ж платное, ядрен батон!

          Помойму, оно не очень совместимо с С++ компоннентами (через QQuickItem).
          И примеров нет…
          0
          На мой взгляд лучше использовать llvmpipe. С ним все замечательно работает и абсолютно программно. Есть даже сборка для Windows.
        0
        Обмен между обоими сторонами возможен благодаря использованию QObject-объектов в контексте выполнения Web-приложения.
        Чёрт, мне бы такое годик назад, когда курсач писал и дикие мосты строил через QtWebKit.experimental модуль.
          0
          Забыли про то, что теперь размеры виджетов можно привязывать к DPI монитора и про то, что QQuickWidget теперь поддерживается на андроиде.
            +5
            Да ладно, самая главная фишка Qt 5.4 — наконец то починены сочетания клавиш в X11 :) Лично потратил на это суммарно около месяца: codereview.qt-project.org/96993
              0
              Большое спасибо за фикс!
                0
                Всегда пожалуйста! Там вообще все весело было, в ходе исследований проблемы оказалась, что как минимум следующие тулкиты содержат баги разной степени в реализации сочетаний клавиш: GTK+ 2, GTK+ 3, Qt4, причем каждый со своими прикольными болячками разной степени заметности, так что теперь Qt5 — единственный тулкит, в котором раскладки реализованы «правильно», по крайней мере я больше не знаю случаев, когда поведение становится неадекватным.
              +1
              Отличная новость!
              Кто разбирается — можете прояснить? Qt WebEngine — это именно chromium, не CEF? Просто думаю поизучать и интересно, намертво ли там вшиты гугловские интерфейсы или можно использовать рендерер отдельно? Так же интересно обновляется ли он из гугловских репозиториев или нужно ждать пока в самом qt обновят версию. В общем насколько все это модульно? Простите за возможно глупый вопрос, просто пока очень поверхностно представляю как работает qt и хромиум.
                –9
                У школоты обострение.

                А «Помойму» ваще радует.
                  +8
                  Наверное очень печально быть вами, соболезную.
                  0
                  За high DPI отдельное спасибо!
                    0
                    Подскажите, пожалуйста.
                    Если смысл пытаться ускорить рендеринг в QWebEngine с помощью QOpenGlWidget?
                    Если да, то как это сделать (старые варианты с QGraphicView не предлагать)? И это будет актуально только для ПК с отдельным GPU или с гибридным также?
                    Использую linux.
                      0
                      Очень бы пригодился высокоуровневый набор инструментов для создания веб-интерфейсов классических серверных приложений. Я так понимаю QWebChannel может в этом помочь?
                        0
                        Если я правильно понимаю, то этот «веб-канал» связывает Qt C++ и JS по веб-сокету. Если этот сокет не ограничен localhost'ом, то по идее мы можем организовать связь между клиентом-браузером и самописным сервером на Qt. Я вас правильно понял?
                          0
                          Если я правильно понимаю
                          Не уверен. Связь между JS-клиентом и сервером на Qt всегда можно было организовать — через QTcpServer и QTcpSocket.
                          Я говорю о более широкой задаче:
                          Есть какое-то серверное приложение на Qt. Требуется к нему сделать веб-GUI, для каких-то сервисных а может и для пользовательских функций. И при этом не сильно закапываться в веб-технологии и внешние сервера вроде Apache или nginx.
                          Типичный пример подобного класса задач — веб-интерфейс роутера.
                        0
                        Отличная новость!

                        Жаль, конечно, что QWebEngine не интегрируется с QNetworkAccessManager, баннерорезалку так не сделаешь. Впрочем, судя по исходникам, выставить наружу какой коллбек для отмены загрузки отдельных ресурсов можно, так что вопрос в том, добавят ли это разработчики Qt.
                          0
                          Они научились нормально поддерживать хотя бы auto deduction и shared/unique_ptr из С++11?
                          0
                          А что они в open source версии много что запретили, это ок? Например, публикации в магазины приложений.
                            +1
                            Можно подробнее? Лицензия на Qt как была, так и есть LGPL/GPL, ни о каких ограничений со стороны Qt я не знаю. Конкретные магазины типа AppStore уже давно запрещают все GPL приложения, а не только на основе Qt. Так что поменялось?

                          Only users with full accounts can post comments. Log in, please.