- PVSM.RU - https://www.pvsm.ru -
Очередной сборник новостей Qt, на этот раз за последние полгода с прошлой статьи [1]. Релизы 5.11 и 5.12, реинкарнация PySide, внезапные похороны Qbs, выход Qt Design Studio и значительное улучшение условий лицензий для стартапов.

Интересной КПДВ я не придумал, потому вместо неё просто ДДПВ — это к нам летом в офис приходил фотограф на корпоративную фотосессию, из которой я и подрезал фотку коллеги.
Начнём с нарушенных обещаний. В конце предыдущей статьи были размещены два голосования: за перевод поста из официального блога [2] про портирование Qt на микроконтроллеры и за написание обзора Safe Renderer [3], и голосование показало, что обе статьи заслуживают публикации. Но в размещении микроконтроллерной статьи НЛО автору отказало: "Публикации рекламного характера вне корпоративного блога и хаба «Я пиарюсь» запрещены правилами сайта". Сложно сказать, что именно там было рекламного (можете посмотреть английский оригинал и оценить), но в таком случае про Safe Renderer не было даже и смысла пытаться (потому что это исключительно коммерческая фича). Так что простите, если кто ждал.
Содержание на сегодня:
22 мая вышел Qt 5.11 [17].
Не могу выделить какие-то особо значительные нововведения, кроме переработанного [18] процесса компиляции QML, который должен существенно улучшить производительность Qt Quick приложений:

Также в релизе:
6 декабря вышел Qt 5.12 [22] (обзор от CTO [23]), очередной LTS релиз, который будет поддерживаться 3 года.
Улучшена производительность [24]. В основном это касается движка QML и JavaScript, который теперь соответствует стандарту ECMAScript 7 [25].
Релиз Qt Remote Object [26] — механизма межпроцессорного взаимодействия как на одном хосте, так и между разными хостами по сети.
Релиз Qt Quick WebGL [27], он же Qt WebGL streaming — то есть возможность транслировать GUI приложения, работающего на удалённом хосте (устройстве без дисплея), и отображать его в браузере на десктопе или планшете. Как пример — Raspberry Pi с камерой, Qt-приложение стримит GUI вместе с выводом камеры, а рендерится всё в обычном Safari на iPad:

Очень прикольная штука, я прямо восторгом с ней поигрался, но откровенно говоря я не представляю, кто и зачем будет этим пользоваться. Если и так подразумевается работа с девайсом из браузера, то зачем городить GUI на Qt Quick и стримить его в WebGL? Не проще ли тогда просто запустить на девайсе нормальный веб-сервер, а GUI на клиенте будет с HTML/CSS/JS без вот этого всего? Странная фича, в общем.
В Qt Quick Controls 2 наконец-то добавили TableView [28]. Вот даже сравнение [29] производительности аналога из Qt Quick Controls 1. К сожалению, по-прежнему никаких новостей про TreeView [30].
Pointer Handlers вышли из статуса превью и переименовались в Input Handlers [31]. Это новый модуль для обработки ввода с мыши, клавиатуры и тачскрина. В связи с этим в какой-то момент следует ожидать "устаревания" MouseArea [32].
В Qt Virtual Keyboard [33] помимо прочего добавлены новые языки а также новый движок рукописного ввода — MyScript [34].
В Qt for Device Creation появились так называемые Qt Board Support Packages [35]. Это те же самые Yocto образы и тулчейны, только теперь в виде отдельно загружаемых и подключаемых к установщику пакетов. Смысл QBSP заключается [36] в поддержке партнёров-вендоров железа, чтобы им было удобнее создавать и распространять Boot to Qt образы для своих устройств.
Развивается поддержка Wayland [37].
За полгода вышло две версии Qt Creator: 4.7 [38] и 4.8 [22].
Из наиболее значимых нововведений — поддержка Language Server Protocol [39], то есть возможность расширения Qt Creator для работы с большим количеством языков программирования. В то же время, "родной" QML до сих пор не в курсе последних версий модулей для импорта, из-за чего их приходится перебирать научным тыком.
В версии 4.8 также должен был быть добавлен модуль телеметрии [40], но в этот релиз он не попал, так что ожидайте в 4.9.
Тот самый полусекретный проект [41]:
Как вы знаете, в составе Qt есть прекрасный инструмент для создания GUI на Widgets — Qt Designer [44]. С ним можно работать как из Qt Creator (вкладка Design), так и запустив его как самостоятельное приложение для работы с .iu файлами.
С появлением Qt Quick добавился инструмент Qt Quick Designer [45], который уже нельзя запустить как отдельное приложение, так как он насмерть прибит гвоздями к Qt Creator.
И вот Qt Design Studio [46] — это тот же самый Qt Quick Designer, но с дополнительным функционалом. Также это теперь самостоятельное приложение, хотя по факту это просто покалеченная копия Qt Creator, которая запускается сразу в режиме дизайна Qt Quick (с возможностью переключения в режим редактирования QML).
Из нового функционала: линия времени для работы с анимациями, удобные диалоги для настройки этих анимаций и компонент live-preview для предпросмотра изменений на лету как в отдельном окне, так и на присоединённом планшете или другом устройстве. Примечательно, что все эти вещи вряд ли когда-нибудь попадут обратно в Qt Quick Designer.
Qt Design Studio предназначена для дизайнеров, и подразумевается, что они будут создавать в ней дизайн приложения, передавать результат (.ui.qml файлы) разработчикам, а разработчики будут работать с ними в полноценном Qt Creator.
Также ведётся разработка плагинов для существующих популярных инструментов дизайна, чтобы дизайнеры могли экспортировать свои наработки из этих инструментов в QML. Первым был создан плагин для Adobe Photoshop [50], следующим ожидается плагин для Sketch [51], затем Adobe XD [52] и другие.
Я не дизайнер, потому мне сложно оценить полезность Qt Design Studio. Когда в Qt были только Widgets, я с плохо скрываемым удовольствием работал в Qt Designer, это отличный инструмент для создания GUI и по сей день. Когда появился Qt Quick, я несколько раз пытался пользоваться Qt Quick Designer, но в итоге бросил и просто пишу QML, для меня так удобнее и быстрее. А так как Qt Design Studio это почти что и есть Qt Quick Designer, то лично я ей пользоваться буду вряд ли. В то же время, насколько мне известно, ряд дизайнерских агентств, которые получили Qt Design Studio на "тест-драйв", отзываются о ней положительно.
В плане лицензирования инструмент вроде как заявлен в Open Source (GPLv3), но в то же время вроде как для распространения результатов работы требуется коммерческая лицензия. Да и просто загрузить установщик не так-то просто, требуется наличие Qt Account [53]. В общем, менеджеры продукта пока ещё не совсем определились.
Продолжается развитие Qt 3D Studio [54]. За это время вышли версии 2.0 [55] (более подробный обзор [56]), 2.1 [57] и 2.2 [58].
Наиболее значительно изменение — переход с движка оригинальной NVIDIA DRIVE Design Studio на собственный движок на основе Qt 3D и значительное улучшение производительности [59].
Также был обозначен план объединения Qt 3D Studio и Qt Design Studio в единый инструмент, то есть вместо двух это будет одно приложение для работы с 2D и 3D.
Говоря о 3D, тут KDAB выпустили своё решение для работы с 3D — Kuesa [60].
В отличие от Qt 3D Studio, они не стали тратить ресурсы на собственный инструмент для 3D моделирования, а позволяют дизайнерам работать с их привычными инструментами (3DS Max, Blender), и далее разработчик может использовать экспортированные glTF [61] модели в Qt. Для удобства в наличии также есть приложение для предпросмотра модели и наименований компонентов, чтобы разработчик знал как к ним обращаться у себя в коде, не открывая модель в оригинальном 3D редакторе.
На мой взгляд Kuesa является конкурирующим Qt 3D Studio решением (и судя по всему, более удачным), и это досадно, потому что вместо того, чтобы параллельно заниматься одним и тем же, эти усилия можно было бы потратить на что-то более полезное (я сейчас не обязательно про KDAB). Тут кстати будет напомнить что сам Qt 3D это тоже вклад KDAB [62].
PySide [63] вернулся, переименовался сначала в PySide2 [64], а потом в скучный Qt for Python [65].
Первый релиз [66] вышел с Qt 5.11, но он всё ещё не считался за полноценный, а вот буквально на днях выпустили уже официальный релиз [67] вместе с Qt 5.12.
Вряд ли я могу рассказать здесь что-то новое. Как и раньше, PySide — это возможность использовать Qt (в основном, для GUI) из Python. Распространяется через PyPI [68], то есть в состав официального установщика Qt не входит, и устанавливается отдельно через pip. Поддержка на embedded платформах пока отсутствует, хотя и запланирована.
Списка отличий от PyQt [69] нет, хотя разработчики и заверяют, что PySide почти ни в чём не уступает, а скоро будет ещё и превосходить. С точки зрения коммерческого лицензирования, с PySide "всё включено" в стоимость лицензии Qt без дополнительной платы, а с PyQt надо ещё платить в Riverbank; с точки зрения Open Source, PySide доступен как под GPLv3, так и под LGPLv3, в то время как PyQt доступен только под GPLv3.
Продолжается работа над портированием Qt на железо уровня микроконтроллеров. Помимо RTEMS [70] были опробованы FreeRTOS [71] (которая стала выглядеть чуть получше после того как Amazon добавил туда некоторую поддержку POSIX) и uClinux [72], и пока вывод такой, что мы всё-таки рекомендуем именно RTEMS.
Говоря о конкретных устройствах, помимо STM32F4/F7 [73] удалось достичь хороших результатов на NXP i.MX RT1050 [74].
Топ 10 предательств в аниме! Вероломно, без объявления войны, в официальном блоге было заявлено [75] об отказе от Qbs [76].
Вкратце: разработка Qbs прекращается, хотя и будет выпущен ещё один релиз, поддержка закончится в конце 2019 года, qmake пока останется, но в перспективе (Qt 6) будет осуществлён переход на CMake как основную систему сборки.
Пост собрал две сотни комментариев (рекорд для нашего блога), и собрал бы больше, но комментарии к постам автоматически закрываются через две недели после публикации. Вот тут [77] ещё есть комментарии на русском.
Опуская техническое обоснование решения, основное возмущение вызвал тот факт, что несколько лет сообществу твердили о том как Qbs прекрасен и какой это шаг вперёд, не говоря уже о заверениях что это будет официальная система сборки в Qt 6 и всем надо на неё переходить (и народ таки начал переходить), и тут вдруг Qbs закрывается таким стремительным домкратом.
Коммерческое лицензионное соглашение [78] обновилось до версии 4.1. Добавился аппендикс с перечислением лицензируемого/распространяемого ПО.
Значительно улучшились условия лицензии для стартапов [79]: во-первых, она теперь не со скидкой, а вообще полностью бесплатная, а во-вторых, теперь доступны компоненты и из Device Creation тоже (готовые образы на основе Yocto Linux, тулчейны для кросс-компиляции и т.д.), однако для распространения продуктов-устройств рантаймы покупать всё равно потребуется (логика такая, что если есть деньги на железо, то должны найтись и на рантаймы).
Лицензия для стартапов выдаётся на год и потом может быть продлена ещё на год. Юридически это полноценная коммерческая лицензия без необходимости выполнять требования GPL/LGPL. После первого года (или двух) она превращается в обычную лицензию за полную стоимость.
У стартапных лицензий действуют следующие ограничения:
Кстати, не исключено, что вашу заявку на стартапную лицензию будет рассматривать как раз девушка с обложки статьи.
В этом году Qt World Summit [80] прошёл два раза: Бостоне и потом в Берлине. Записей выступлений пока нет, есть только короткий видео-обзор [81] берлинского и пост от KDAB [82].
Грядёт обновление иконок приложений:

Как вам? Мне тоже. А главное, откуда опять эта нужда в редизайне, не так давно был уже один, и довольно неплохой.
Компания Forrester провела исследование [83], в котором изучила влияние Qt на бизнес, всякие там ROI показатели и прочее. Вроде как это должно помочь компаниям оценить пользу от Qt и принять решение о приобретении коммерческой лицензии. Есть даже онлайн-калькулятор [84] для подсчёта сэкономленных попугаев.
На этом с новостями пока всё, следующий выпуск будет где-нибудь в мае или как наберётся достаточно материала.
Автор: abagnale
Источник [85]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/qt-2/303366
Ссылки в тексте:
[1] прошлой статьи: https://www.pvsm.ru/post/354972
[2] поста из официального блога: http://blog.qt.io/blog/2018/05/03/qt-microncontrollers-mcu/
[3] Safe Renderer: https://doc.qt.io/QtSafeRenderer/qtsr-overview.html
[4] Новые релизы: #releases
[5] Qt 5.11: #qt511
[6] Qt 5.12: #qt512
[7] Обновления инструментов: #tools
[8] Qt Creator 4.8: #qtc
[9] Qt Design Studio 1.0: #qds
[10] Qt 3D Studio 2.2: #q3ds
[11] Анонс Kuesa: #kuesa
[12] Релиз PySide / Qt for Python: #pyside
[13] Дальнейшее портирование на MCU: #mcu
[14] Отказ от Qbs: #qbs
[15] Изменения в коммерческом лицензировании: #license
[16] Другие новости: #other
[17] вышел Qt 5.11: http://www.opennet.ru/opennews/art.shtml?num=48641
[18] переработанного: http://blog.qt.io/blog/2018/05/22/optimizing-qml-compiler-pipeline/
[19] сжатых текстур в Qt Quick: https://blog.qt.io/blog/2018/05/07/compressed-textures-in-qt-5-11/
[20] OPC UA: https://blog.qt.io/blog/2018/05/16/opc-ua-support-qt-5-11/
[21] Qt for WebAssembly: http://blog.qt.io/blog/2018/05/22/qt-for-webassembly/
[22] вышел Qt 5.12: http://www.opennet.ru/opennews/art.shtml?num=49731
[23] обзор от CTO: https://youtu.be/IDMvhb0GOFs
[24] Улучшена производительность: http://blog.qt.io/blog/2018/11/16/qt-quick-performance-improvements-qt-5-12-lts/
[25] соответствует стандарту ECMAScript 7: https://bugreports.qt.io/browse/QTBUG-47735
[26] Qt Remote Object: https://doc.qt.io/qt-5.11/qtremoteobjects-gettingstarted.html
[27] Qt Quick WebGL: http://blog.qt.io/blog/2018/11/23/qt-quick-webgl-release-512/
[28] TableView: https://doc.qt.io/qt-5.12/qml-qtquick-tableview.html
[29] сравнение: http://blog.qt.io/blog/2018/12/20/tableview-performance/
[30] TreeView: https://bugreports.qt.io/browse/QTBUG-61630
[31] Input Handlers: https://doc.qt.io/qt-5/qtquickhandlers-index.html
[32] MouseArea: https://doc.qt.io/qt-5/qml-qtquick-mousearea.html
[33] Qt Virtual Keyboard: http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html
[34] MyScript: http://blog.qt.io/blog/2018/11/28/handwriting-essential-input-method-successful-user-experience/
[35] Qt Board Support Packages: https://doc.qt.io/QtForDeviceCreation/qtdc-qbsp.html
[36] заключается: http://blog.qt.io/blog/2018/12/14/board-support-package-commercial-build-enablers-qt-partners/
[37] Wayland: http://blog.qt.io/blog/2018/12/14/whats-new-wayland-platform-plugin-qt-5-12/
[38] 4.7: http://www.opennet.ru/opennews/art.shtml?num=48987
[39] Language Server Protocol: https://en.wikipedia.org/wiki/Language_Server_Protocol
[40] модуль телеметрии: https://bugreports.qt.io/browse/QTCREATORBUG-20250
[41] полусекретный проект: https://habr.com/post/354972/#anchordsanchorqt-design-studio
[42] официальный анонс: http://blog.qt.io/blog/2018/06/26/qt-design-studio-the-new-age-of-ui-development/
[43] релиз: http://www.opennet.ru/opennews/art.shtml?num=49499
[44] Qt Designer: http://doc.qt.io/qt-5/qtdesigner-manual.html
[45] Qt Quick Designer: http://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html
[46] Qt Design Studio: https://doc.qt.io/qtdesignstudio/index.html
[47] рекламный ролик: https://youtu.be/EgjCvZWEPWk
[48] краткий обзор: https://youtu.be/kVdQ0V8mJE4
[49] пример работы с проектом: https://youtu.be/aV6kFxH3Xws
[50] Adobe Photoshop: https://www.adobe.com/products/photoshop.html
[51] Sketch: https://www.sketchapp.com
[52] Adobe XD: https://www.adobe.com/products/xd.html
[53] Qt Account: https://account.qt.io/
[54] Qt 3D Studio: https://doc.qt.io/qt3dstudio/qt3dstudio-index.html
[55] 2.0: http://blog.qt.io/blog/2018/06/26/qt-3d-studio-2-0-released/
[56] более подробный обзор: http://blog.qt.io/blog/2018/06/27/whats-qt-3d-studio-scene/
[57] 2.1: http://blog.qt.io/blog/2018/10/01/qt-3d-studio-2-1-released/
[58] 2.2: http://blog.qt.io/blog/2018/12/13/qt-3d-studio-2-2-released/
[59] улучшение производительности: http://blog.qt.io/blog/2018/12/19/qt-3d-studio-performance-improvements/
[60] Kuesa: https://www.kdab.com/kdab-releases-kuesa-for-3d-asset-creation-and-integration-workflow/
[61] glTF: https://en.wikipedia.org/wiki/GlTF
[62] вклад KDAB: http://blog.qt.io/blog/2016/06/16/introducing-qt-3d/
[63] PySide: https://wiki.qt.io/PySide
[64] PySide2: https://wiki.qt.io/Qt_for_Python
[65] Qt for Python: https://www.qt.io/qt-for-python
[66] Первый релиз: http://blog.qt.io/blog/2018/06/13/qt-python-5-11-released/
[67] официальный релиз: http://blog.qt.io/blog/2018/12/18/qt-python-5-12-released/
[68] PyPI: https://pypi.org/project/PySide2/
[69] PyQt: https://riverbankcomputing.com/software/pyqt/intro
[70] RTEMS: https://www.rtems.org
[71] FreeRTOS: https://www.freertos.org
[72] uClinux: http://www.uclinux.org
[73] STM32F4/F7: https://www.st.com/en/microcontrollers/stm32f7-series.html?querycriteria=productId=SS1858
[74] NXP i.MX RT1050: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1050-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1050
[75] было заявлено: http://blog.qt.io/blog/2018/10/29/deprecation-of-qbs/
[76] Qbs: http://doc.qt.io/qbs/
[77] тут: http://www.opennet.ru/opennews/art.shtml?num=49519
[78] лицензионное соглашение: https://www.qt.io/terms-conditions/
[79] лицензии для стартапов: https://www.qt.io/start-up-plan/
[80] Qt World Summit: https://www.qt.io/qtws18/home/
[81] видео-обзор: https://youtu.be/qSGVv0HFcIM
[82] пост от KDAB: https://www.kdab.com/kdab-demos-at-qt-world-summit-berlin/
[83] исследование: https://www.qt.io/forrester-tei
[84] онлайн-калькулятор: https://www.qt.io/roi-calculator
[85] Источник: https://habr.com/post/434338/?utm_campaign=434338
Нажмите здесь для печати.