Новости Qt, июнь 2017 — май 2018

    Что нового появилось/произошло в Qt за полгода почти год с прошлой статьи. Релизы 5.9 и 5.10, а также новые инструменты, аддоны, платформы и переход на подписочную модель лицензирования.


    Релизы Qt


    Я бы хотел писать о новостях чаще, чем раз в полгода год, но получается как получается. Эту статью я вообще начинал писать в январе, но закончить удалось только сейчас.


    Сегодня содержание такое:



    Конференции и выставки


    Qt Contributors Summit 2017


    Это конференция разработчиков Qt. Не только тех, кто работает в The Qt Company (их даже было меньше половины участников), а вообще всех желающих, кто участвует в проекте.


    В 2017 году Qt Contributors Summit был совмещён с Qt World Summit 2017, и проходил в Берлине. Программа и конспекты сессий опубликованы на вики.


    В этом году было решено провести конференцию в Осло, то есть World Summit на этот раз пройдёт отдельно.


    Qt World Summit 2017


    Мероприятие (конференция), которое организует сама The Qt Company. В 2017 году саммит прошёл в Берлине. По числу посетителей получился рекорд — около 1000 человек (в прошлом было 800?).


    В адресе страницы события (https://www.qtworldsummit.com) год не указан, потому, надо полагать, скоро эта ссылка начнёт указывать на саммит 2018 года (уже указывает), а 2017 уедет куда-нибудь в архив (нет, просто куда-то дели). Но пока не уехала (уже уехала) — можно посмотреть программу конференции и участников выставки. Там же можно было загрузить мобильное приложение саммита, написанное на Qt (точнее, на V-Play), и поразиться тому, как оно тормозит и крашится на каждый чих, спасибо партнёрам-разработчикам. Почему мы сами который год не можем написать приложение для собственного саммита — непонятно.


    Все выступления с конференции опубликованы на YouTube.


    Список плейлистов
    • Keynotes:
      • Qt Design Principles and Roadmap, Lars Knoll, The Qt Company;
      • Modern C++, Herb Sutter;
      • Trends in Software and Business, Igor Beuker;
      • One Hundred Languages, Linda Liukas, Hello Ruby;
      • How Do You Measure What You Can’t See? Steven Goldfarb, ATLAS experiment, CERN;
      • Welcome to Qt World Summit 2017, Juha Varelius, The Qt Company;
      • Game Engine Evolution: From Tech to UX, Alex Montgomery, Amazon Lumberyard;
      • An IDE for Embedded Devices, Justin Howard, Qualcomm;
    • Business:
      • Cut development time and cost with Qt and QML, Thomas Boutroue, Independent Qt Expert;
      • The Evolution of the LGPL License Agreement, Paul Criswell, Independent General Counsel;
      • Applying Spatial Analytics to Unlock the Power of your Data, Eric Bader, Esri;
      • Qt vs. Web – Total Cost of Ownership, Burkhard Stubert, Embedded Use;
      • System-on-Modules HMI and M2M solutions development, Rimac Automobili, Toradex;
      • Success with mobile first in a real business, Roland Wienen, caseIC-SYS Informationssysteme;
      • First experience with Qt for Mobile: our journey, Bogdan Ogrean, FORTecH;
      • One developer, Three products, Three platforms, Nuno Filipe Magalhães Santos, Imaginando;
      • Investing into Software Technologies, Petteri Holländer, The Qt Company;
      • Interactive DOOH software with Qt libraries, Ionut Alexandrescu, The Qt Company;
    • App Dev:
      • Take a walk on the PySide, Friedemann Kleint, The Qt Company;
      • A Cute app deserves a Clean architecture, Marco Piccolino, Maply;
      • Improve your productivity with Clang tools. Olivier Goffart, Woboq GmbH;
      • RESTful API description languages, Alexey Rusakov;
      • QtBluetooth on mobile devices — A dragon guide, Mathias Hasselmann, KDAB;
      • Technical Tips and Examples for Development & Testing, Christian Feldbacher, V-Play;
      • Introduction to User Experience Design for Developers, Jeff LeBlanc, ICS;
      • Test coverage of Qt C++ and QML, Harri Porten, froglogic;
      • The Pre-User and the Unified User Experience, Jeffrey Brendecke Software Services;
      • Android & iOS — put your app on a diet, Maciej Węglarczyk, GameDesire;
      • No Limits: HowTo make a more complicated mobile business APP, Ekkehard Gentz;
      • Inside The Qt Object Model, Simon Hausmann, The Qt Company;
      • QML For C++ Developers, Bo Thorsen, Viking Software;
    • Embedded:
      • Using Qt to Build Next Generation Intuitive High End Cameras, Richard Röjfors, Hasselblad;
      • Qt Wayland Compositor: Creating multi-process user interface, Johan Helsing, The Qt Company;
      • Accelerating Time to Market for Embedded Device, Jouko Luukas The Qt Company;
      • Gestures Handling in Qt, Bo Thorsen Viking Software;
      • Qt for Embedded Device creation — future direction, Marko Finnig, The Qt Company;
      • KNX in the IoT world, Dries Verbrugge, KNX;
      • Using Virtual Keyboards on Qt Embedded Devices, Jan Arne Petersen, KDAB;
    • Graphics and 3D:
      • Integrating OpenGL with Qt Quick 2 applications, Giuseppe D'Angelo, KDAB;
      • Integrating out of process graphical content into a QtQuick scene, Giulio Camuffo, KDAB;
      • Creating User Interfaces for Virtual Reality with Qt, Andy Nichols, The Qt Company;
      • Breathing life into your applications: Animation with Qt 3D, Sean Harmer, KDAB;
      • Modern Graphics APIs in Qt: Vulkan and friends, Laszlo Agocs, The Qt Company;
      • Earth rendering with Qt 3D, Paul Lemire — KDAB;
      • Qt in Use in Fortune 500 Companies, V-Play;
      • Qt 3D as a Runtime Enabler, Laszlo Agocs, The Qt Company;
      • What's new in Qt 3D? Sean Harmer, KDAB;
      • Creating 3D User Interfaces with Qt 3D Studio, Sami Makkonen, The Qt Company;
      • Interacting with 3D content, Mike Krus, KDAB;
    • Medical:
      • Technical Overview of Qt in Medical devices, Ionut Alexandrescu, The Qt Company;
      • Building a Human Machine Interface for the medical IoT, Jereme Givens-Lamothe, DocBox;
      • The Present and Future of Qt in the Medical Industry, Roger Mazzella, The Qt Company;
      • Imaging Tissue Architecture: The Next Frontier in Battling Cancer, Michel Nederlof, QIS;
      • Communicating with Thoughts, Matthias Hohmann, Max Planck Institute;
    • Technical Deep Dive:
      • QObject Deep Dive, Bo Thorsen, Viking Software;
      • Qbs – Build Systems State of the Union, Jake Petroules, The Qt Company;
      • QtLocation 5.9: from tilted maps to pluggable engines, Paolo Angelelli, The Qt Company;
      • Pointer Handlers for fluid applications in Qt Quick, Shawn Rutledge, The Qt Company;
      • QStringViews, QStringViews everywhere, Marc Mutz, KDAB;
      • Multithreading with Qt — Giuseppe D'Angelo, KDAB;
    • Industrial Automation:
      • QtWebGL, Jesus Fernandez Prieto, The Qt Company;
      • Securing Qt based Linux Devices, Maciej Halasz, TimeSys;
      • Device Tailored Compositors with QtWayland, Andreas Cord-Landwehr, CLAAS E-Systems;
      • Practical Qt Lite, Frank Meerkötter, basysKom;
      • Boot Time Optimization for Qt-powered Devices, S. Agner, R. Avila, Toradex/The Qt Company;
      • Designing the Internet of Things with Microsoft, Sylvain Ekel, Microsoft;
      • QtKnx: the new Qt module dedicated to home automation, The Qt Company Lucie Gerard;
      • Qt and Mqtt, Maurice Kalinowski, The Qt Company;
      • How CoAP standard makes your IoT talk with Qt, Adrien Leravat, Witekio;
      • LPWAN will make the IoT Revolution Real, Massimo Santoli, Gimasi;
      • ChargePoint EV Charging: One UI to rule them all, Matthew Hungerford, Chargepoint;
      • Qt for Automation, Lars König, The Qt Company;
      • Intro to the WebOS QtWayland Compositor, Florian Haenel, LG Electronics;
    • Automotive:
      • Functional safety with Qt and Qt Safe Renderer, Tuukka Turunen, The Qt Company;
      • Plugin-based IVI Architectures with Qt, Krzysztof Krzewniak Vladimir Moolle, ICS;
      • Communication with slave device over CAN bus from embedded, Nazar Babik, Viking Software;
      • QtWS17 — Maximize your creativity and quality for automotive HMIs, Hirotaka Suzuki, sdtech;
      • Automotive navigation with Mapbox GL and QtLocation, Bruno de Oliveira Abinader, Mapbox;
      • QML-driven HMI Architectures for Rolling Embedded Devices, Christoph Sterz, KDAB;
      • GammaRay — Taking a deeper look into your Qt application, Volker Krause, KDAB;
      • Qt for gesture control and body tracking applications, Sascha Klement, Gestion;
      • Modbus with Qt, Morten Winkler Jørgensen, Viking Software;
      • Future of Vehicle HMI Systems, Takayuki Tanabe, Panasonic ITS;
      • Behind the scenes of a show car: Rapid UI/UX prototyping, Alex Hilliger, Daimler;
      • Complex Event Processing of An Electric Car In A Simple Way, Müge Kural, Eteration;
      • QtIVI: Integrating and Testing vehicle functions with Qt Automotive Suite, KDAB;
      • Under the Hood of Qt Automotive Suite After One Year of Hacking, Johan Thelin, Luxoft;
      • Race to digital cockpits – win with Qt, Tero Marjamäki, The Qt Company.

    На выставке в центре зала показывали новые разработки:



    Вокруг стояли стенды партнёров и клиентов, которые показывали что-то из своего. Например, Mercedes-Benz прикатили вот такой концепт-кар.


    Начиная с 2018 года, саммитов теперь несколько и проходить они будут в разное время и разных местах. В этом году будет 2: американский (Бостон) и европейский (Берлин) — оба ближе к концу года. Далее планируется добавить третий для стран Азии (возможно, в Токио).


    Qt на Embedded World 2018


    Как и в прошлом году, мы были на выставке Embedded World в Нюрнберге.


    Из интересных демо можно выделить:



    Что вообще нового


    Изменения в коммерческой лицензии


    Начиная с января 2018, лицензии Qt для всех продуктов перешли на модель подписки (term-based), то есть больше нельзя приобрести "пожизненную" лицензию. Вообще, для тех кто до этого и так "продлял" лицензию каждый год (для обновлений и поддержки) ничего особо не поменялось, потому что фактически это уже и была подписочная модель. Но есть отличие: раньше можно было не продлять лицензию и спокойно продолжать разрабатывать/распространять свой продукт (сама лицензия-то пожизненная), но теперь условия лицензионного соглашения это запрещают — у вас должна быть хотя бы одна активная подписка, иначе нельзя ни вести разработку, ни продавать уже готовый продукт. Вот это поворот!


    Я представляю, что вы хотите сказать мне на тему лицензий-подписок, я и сам всё это не раз говорил разработчикам тех или иных приложений (Ulysses, например), но не я это придумал, я только доставляю новость. Но вообще, для фреймворка подписочная лицензия выглядит более-менее оправданной (по сравнению с подпиской на текстовый редактор).


    Из положительных изменений — если вы приобретаете Device Creation, то лицензия Application Development теперь входит в его состав. Кроме того, раньше для RTOS (операционных систем реального времени) была отдельная цена для каждой, а теперь всё включено.


    Всё это отражено в новом лицензионном соглашении (License Agreement version 4.0, которое кстати больше не разделяется на отдельные соглашения для Application Development и Device Creation.


    Изменения на сайте


    Работа над "улучшением" вебсайта не останавливается ни на минуту, и длина списка подключённых сторонних скриптов уже больше километра. Анимация всего подряд позволила достичь утилизации процессора пользователя на уровне 80-90% и соответствующего энергопотребления, что, однако, не осталось незамеченным для посетителей, потому сейчас идёт героическая борьба за оптимизацию всех этих красот.


    Если вы задавались вопросом, почему какие-то разделы сайта лежат на поддомене www, а какие-то на www1, то это потому что на сайте используется две разных CMS. Ну потому что вот так.


    Где-то в мае 2017 очередной эффективный менеджер решил запрятать Open Source загрузки куда подальше и поставить побольше кнопок Buy Qt ("купи лицензию"). Запрятали настолько хорошо, что нам даже стали присылать письма с вопросом "Почему вы удалили Open Source?!". К счастью, встретив критику как от Open Source сообщества, так и внутри компании, через каких-то полгода это изменение пересмотрели и вернули всё почти как было.


    Появился новый раздел — Qt Resource Center, такой агрегатор различных ресурсов (статьи, видео, "истории успеха" и т.д.) с разделением на категории и поиском. Теперь можно, например, разом заполучить все твиты официального аккаунта (но зачем).


    Релизы


    Qt 5.9


    31 мая 2017 вышел Qt 5.9. Он же следующий после Qt 5.6 релиз LTS — с долгосрочной поддержкой (3 года).


    В статье на OpenNET уже есть отличный обзор.


    Кстати, это вроде бы первый релиз со времён Qt 4.7, для которого было выпущено более трёх корректирующих (minor) релизов (текущая версия 5.9.5).


    И начиная с этой версии, корректирующие (minor) релизы теперь опять не обновляют текущий, а устанавливаются отдельно:


    Корректирующие релизы Qt


    Qt 5.10


    7 декабря 2017 вышел Qt 5.10.


    И опять прекрасный обзор релиза в статье на OpenNET.


    Аддоны


    В дополнение к обычным (базовым) лицензиям (Application Development и Device Creation) теперь будут появляться "аддоны". Вообще, хотели сделать что-то вроде магазина аддонов/плагинов (как qpm, только официальный), но дальше идеи пока не пошло, потому они будут просто добавляться в установщике.


    Если взять за основу схему из прошлой статьи, то новая выглядит так:


    Схема лицензирования Qt


    И без того непростая структура лицензирования стала ещё сложнее. Если попытаться объяснить всё вкратце, то аддоны в "стандартные" лицензии не входят и продаются за дополнительные деньги. Учитывая, что не всем интересно читать про коммерческие лицензии, я подробно расписывать не буду (кроме того, надо и отделу продаж дать поработать).


    Если же вы используете Qt под Open Source, то для вас ничего не поменялось — просто добавились новые библиотеки и инструменты.


    Qt for Automation


    Qt for Automation — первый аддон, объявленный в августе 2017. Представляет собой пакет библиотек для построения решений для так называемых Industry 4.0 и M2M.


    На данный момент (Qt 5.10) в состав аддона входят:



    С Qt 5.11 должен появиться OPC UA, затем CoAP и другие. Кроме самих библиотек также предоставляется пакет сервисных услуг по установке/настройке/обучению.


    Qt for Medical


    Пока больше промо, чем реальный продукт/аддон. Ну а так, конечно, планируется добавление функционала, специфичного для медицинской индустрии, например работа с форматом DICOM (хотя конкретно для этого формата уже есть сторонние реализации).


    На самом деле, для связанных с медициной проектов больше важна сертификация, чем фичи, и потому мы теперь входим в состав таких ассоциаций и альянсов как AdvaMed, Qmed и MassMEDIC. Я от этой индустрии далёк, потому о реальной пользе от вхождения в эти альянсы ничего сказать не могу.


    Qt 3D Studio


    В октябре 2017 исходники Qt 3D Studio были наконец-то опубликованы (статья на OpenNET). Почему не опубликовали сразу после получения их от Nvidia — потому что там всё было написано на MFC, и решили сначала портировать это на Qt.


    Через месяц после публикации исходников выпустили и версию 1.0. В ней всё ещё используется собственный 3D движок за авторством Nvidia, но уже почти закончена работа по переводу его на уже существующий Qt 3D (потому что хватит плодить движки).


    Qt 3D Studio и её рантайм доступны как под коммерческой лицензией, так и под GPLv3 (под LGPLv3 нет). Сама студия бесплатная, но использование её рантайма в вашем коммерческом приложении увеличивает стоимость лицензий на распространение (если таковые полагаются).


    Qt Design Studio


    Вообще, это пока полусекретный проект, но раз на официальном канале опубликовали это видео, то получается уже и не очень секретный.


    Но на всякий случай, пока без особых подробностей. Когда-то скоро должен состояться официальный анонс (через пару недель?) и первая публичная бета-версия (в июне?).


    Qt Safe Renderer


    Qt Safe Renderer — это сертифицированный (IEC 61508 и производные стандарты functional safety) рендерер графики. Фактически отдельное приложение, которое рендерит критичные элементы GUI независимо от главного приложения. И если главное приложение "помрёт", то эти элементы продолжат отображаться на экране.


    Очевидные сферы применения: автомобильная и медицинская индустрии, где зависание главного приложения на скорости 200 км/ч или во время хирургической операции чревато негативными последствиями.


    Пример использования в цифровом инструментальном кластере (дашборде) автомобиля:


    Qt Safe safe-renderer


    Если интересно, я могу написать отдельную статью с "живым" примером на железе под управлением QNX (в конце статьи будет опрос). Но сразу хочу сказать, что Safe Renderer в Open Source не попадёт и будет доступен только за деньги (и очень немаленькие).


    Roadmap


    • Скорый релиз PySide — использование Qt из Python;
    • Qt Quick Pointer Handlers — "более лучший" мультитач и вообще работа с тачскринами;
    • Qt for WebAssembly — запуск Qt приложений в браузере (не знаю, зачем могу попытаться объяснить, зачем);
    • Переработка (new compiler pipeline) QML Engine;
    • Поддержка формата KTX;
    • Qt 5.11 будет в мае-июне 2018 (уже вышел RC — release candidate);
    • Следующий LTS релиз будет Qt 5.12 (ожидается в конце осени 2018). Минимум новых фич, фокус на надёжность и производительность;
    • Qt 6 ожидается очень примерно года через два;
      • Всё ещё в силе план перейти с qmake на Qbs.

    Qt на микроконтроллерах (MCU)


    Очень часто спрашивают, можно ли использовать Qt для разработки ПО, и частности GUI, на микроконтроллерах.


    И вот мы провели исследование, завершившееся портированием Qt под операционную систему реального времени RTEMS и оптимизацией сборки Qt для запуска на микроконтроллерах STM32F469, STM32F746 и STM32F769.


    О результатах исследования недавно вышел пост в официальном блоге, и кстати говоря, оригинал этого поста вообще-то был написан на русском, так что с минимальными усилиями его можно опубликовать и на Хабре (об этом тоже будет опрос в конце статьи).


    Пока идёт сбор отзывов от клиентов, кто куда и что хотел бы портировать, и потом на основе пожеланий будет планироваться дальнейшее развитие.


    Вакансии


    В этом году вакансий не так много, как в прошлом, но поиск новых сотрудников продолжается. Так что если что-то заинтересовало, можете написать мне, и я расскажу подробнее.


    Вот например уже больше полутора лет (серьёзно) в берлинский офис разыскивается sales engineer — это такой человек, который разбирается в Qt и при этом может разговаривать с людьми (клиентами) и отвечать на их технические вопросы. Уже настолько отчаялись найти, что возьмём кого угодно будем рады любым кандидатам. Кстати, не самый плохой способ завести трактор, хотя наверное мне не стоит такое говорить. Осложняется вакансия тем, что так как позиция в Берлине, то очень желательно знание ещё и немецкого.


    Всего в 2017 наняли около 130 человек. Люди приходят из всех (включая русскоязычные) частей планеты, никаких рассовых/религиозных/половых предпочтений/предрассудков нет (кроме того что на позиции эффективных менеджеров берут только чаще финнов (шутка)).


    Заключение


    Если хотите узнать о чём-то подробнее, пишите комментарии, я постараюсь ответить сам или узнать у тех кто знает.




    Дополнение №1 — Про Qt Quick Compiler


    Сначала Qt Quick Compiler обещали отдать в Open Source с релизом Qt 5.8. Правда, там было сказано "...integrate the Qt Quick Compiler functionality", то есть как бы не сам Qt Quick Compiler, а только его функциональность. Забегая вперёд, это и так и не так одновременно.


    В Qt 5.8 появился механизм кэширования QML, который анонсировался как "замена" Qt Quick Compiler. Сам Qt Quick Compiler при этом никуда не делся и был доступен для обладателей коммерческих лицензий как в релизе 5.8, так и в 5.9, так и в 5.10. В 5.11 ситуация изменится, об этом чуть ниже.


    Почему кэширование QML назвали заменой Qt Quick Compiler? Потому что оно генерирует байт-код и складывает его в файлы кэша (.qmlc для QML и .jsc для JavaScript), и вот этот байт-код оказался более "производительным", чем промежуточный (intermediate/untyped) C++ код, который генерировался Qt Quick Compiler'ом. Так что QML кэшинг действительно является заменой (и хорошей) "старого" Qt Quick Compiler'а.


    Теперь про Open Source. Исходники Qt Quick Compiler открыты не будут, потому что менеджмент решил, что в этом случае народ сможет его портировать на старые версии Qt, где этот компонент был доступен только коммерческим пользователям, которые могут от этого огорчиться.


    Почему я назвал Qt Quick Compiler "старым" и вообще использовал прошедшее время? Потому что он прекращает своё существование как генератор C++ кода из QML/JS, и в Qt 5.11 он станет доступен во-первых, всем пользователям, а не только обладателям коммерческой лицензии, а во-вторых, его реализация будет существенно отличаться от текущей, и он больше не будет генерировать C++ код, а будет генерировать тот же байт-код, что и QML кэшинг.


    В чём же тогда разница между "новым" Qt Quick Compiler'ом и QML кэшингом, раз они дают один и тот же байт-код? Пересказывая вкратце документацию релиза 5.11, "новый" Qt Quick Compiler предоставляет следующие возможности, которых нет у QML кэшинга:


    1. Первоначальное "кэширование" QML происходит не с первым запуском приложения, а во время сборки приложения, как дополнительный шаг компиляции. То есть первый старт приложения уже будет "оптимизированным";
    2. Благодаря этому синтаксические ошибки QML можно отлавливать уже во время сборки приложения, а не получать их в рантайме;
    3. Среди файлов приложения не будут валяться открытые текстовые QML, что хоть и слабенько, но всё-таки способствует защищённости приложения.

    Проще говоря, этим "новый" Qt Quick Compiler повторяет функционал "старого".


    Ну и соответственно не будет смысла использовать одновременно и QML кэшинг, и Qt Quick Compiler. Точнее, у вас этого и не получится, потому что они взаимоисключаются. QML кэшинг работает из коробки в неявном виде, а Qt Quick Compiler нужно явным образом задействовать, в результате чего механизм кэшинга просто "отключится" (что логично). И кстати, понятное дело, теперь между ними нет разницы в производительности, так как в сути своей оба механизма делают одно и то же.


    Почему бы тогда просто не использовать всегда Qt Quick Compiler, что за смысл тогда в QML кэшинге? Как указано в документации, у Qt Quick Compiler'а будет ряд ограничений, которые подойдут не всем проектам, потому какие-то проекты будут полагаться на один механизм, а какие-то смогут воспользоваться другим.


    Ещё одно отличие — если используя "старый" Qt Quick Compiler вы не могли использовать JIT (потому что результатом его работы был C++ код (хотя тут есть ещё и второе дно)), то "новый" Qt Quick Compiler а также QML кэшинг смогут использовать также и JIT для особо востребованных фрагментов кода. Короче говоря, до Qt 5.11 JIT ничего не давал поверх уже "скомпилированного" QML, а начиная с 5.11 — будет.


    Кстати, тут оказалось, что у нас как раз готовится статья на эту тему, так что скоро сможете почитать в официальном блоге (там кстати есть RSS) более грамотное/корректное объяснение происходящего.


    Про iOS стиль для Qt Quick Controls 2


    Как таковой стиль был более-менее готов ещё в феврале 2016:


    QQC2 iOS style


    Но в релиз не попал по ряду причин, включая и юридические.


    Apple совершенно не против приложений, которые не выглядят "нативно", то есть можно творить любое безумие и всё будет нормально (кроме количества звездей от ваших пользователей). Но как только речь заходит о "родном" стиле iOS, то там всё должно выглядеть идеально и строго соответствовать гайдлайнам.


    Дизайны/гайдлайны стилей Material (Android) и Universal (Windows) не только находятся в общем доступе (мне так сказали), но также и не ограничены какой-то одной платформой, и Google как и Microsoft напротив всячески поощряют распространение своих дизайнов на все платформы, не только мобильные, но и десктопы с вебом, включая платформы конкурентов. Всего этого нельзя сказать про iOS.


    Ну и потому любая попытка "воссоздать" стиль iOS будет лишь имитацией и подражанием оригинальному стилю. Говоря о "look and feel", часть, которая "look", уже достаточна сложна для воссоздания, но часть "feel" — вообще нереальна. То есть GUI может и будет выглядеть "родным", но первый же свайп / скролл / пинч выдадут "подделку".


    Также в результате исследования оказалось, что это чревато как раз-таки юридическими проблемами — если мы будем выдавать наш стиль за "родной" стиль iOS, то Apple может сказать что-то неприятное. Плюс приложения наших клиентов могут получить отказ в App Store по причине несоответствия UX гайдлайнам.


    Кроме того, всплыл ещё один интересный момент. Так как наша реализация стиля iOS разумеется запилена на Qt, который вообще-то является кроссплатформенным фреймворком, то внезапно китайские "производители" клонов iPhone/iPad смогут использовать наш стиль в своих ведроподелиях. Честно говоря, я не понимаю, почему нас это должно волновать, но вот тем не менее, мне сказали, что это проблема.


    Отличным решением может стать вот этот проект, я его уже упоминал в прошлых статьях. Вкратце, это использование реально "родного" GUI платформы (а не "воссозданного" стиля) через QML (или C++, если угодно). Но из того, что я вижу во внутреннем трекере, последняя активность по этой задаче была в октябре 2017 и с тех пор тишина.


    Теперь про то, что предлагает V-Play. Я, честно говоря, не знаю, и команда тоже не ответила. Но учитывая вышесказанное, есть два варианта:


    1. Они пошли по пути воссоздания и реверс-инжениринга стиля iOS, и то что они предлагают, это просто реплика, и соответственно они либо их клиенты потенциально могут ожидать проблем от Apple. Я прошу учесть, что я ни в чём не обвиняю V-Play, а просто строю предположения;
    2. Они реализовали упомянутый в предыдущем абзаце проект — то есть работают с настоящим GUI iOS через QML-обёртку.

    Можно попытаться связаться с V-Play и спросить у них самих. Но они могут не захотеть делиться такой информацией.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Есть смысл публиковать русский оригинал блог-поста про Qt на микроконтроллерах?
    • 12%Нет, в английском посте и так всё понятно17
    • 4.2%Нет, не тянет на полноценную статью6
    • 83.6%Да118
    Нужна ли статья про Qt Safe Renderer (напоминаю, его не будет в Open Source)?
    • 65.9%Да87
    • 34%Нет45
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 117
      +2
      Очень хорошо, что начали развивать PySIDE, многолетнее отсутствие LGPL связки с Питоном удручало и негативно сказалось на мелком коммерческом софте под Линукс.

      А Safe Renderer мне не видится такой уж сложной штукой, разве что проблема в ограниченности ресурсов. Думаю, очень быстро напишут стороннюю OpenSource реализацию и будет как всегда — две совершенно одинаковых, но не совместимых способа сделать одно и то же.
        0
        я пару лет назад пробовал альтернативную сборку этих либ. выроде бы все впорядке(то что мне потребовалось — работало).
        а родная не хотела дружить со свежими питонами — тоже сперва огорчился, но всё оказалось не так страшно
          +1

          И это действительно так. Реализация очень простая, можно даже сказать примитивная.


          Вся ценность в сертификации. Это очень сложно (и очень дорого) — сертифицировать ПО. Ваш продукт с самописным рендерером просто не пустят на рынок, потому что вы не соответствуете стандартам.


          А Qt Safe Renderer прошёл сертификацию, и приобретая его вы на самом деле больше платите за сертификат, чем за техническое решение.

          +2
          > Qt for WebAssembly — запуск Qt приложений в браузере (не знаю, зачем могу попытаться объяснить, зачем)

          Ждем! А запуск любых приложений? QML часть или с С++ тоже?

          И да. В QtQuick Controls 2 появится когда-нибудь TreeView?
            +1

            Как понимаю wiki C++ и QML.

              +2
              Присоединяюсь про TreeView
                +1
                В QtQuick Controls 2 появится когда-нибудь TreeView?

                TreeView всё ещё в процессе, как и SplitView с TableView. Кстати, для TableView есть примерные сроки — 5.12, то есть в конце осени. Для TreeView сроков нет (как и нет реквеста в трекере, кстати).

                  0
                  Qt for WebAssembly
                  QML часть или с С++ тоже?

                  C++ тоже. Вот тут, кстати, можно найти примеры.

                  +1
                  >Если хотите узнать о чём-то подробнее, пишите комментарии
                  А расскажите про поддержку Андроида и перспективы этой поддержки. Дело в том, что поддержка есть (я довёл пару программ до Google Play без особых приключений), но Google начал ставить палки в колёса и на данный момент собрать нормально работающее окружение для разработки на Qt под Android — задача мутная и есть основания считать, что дальше будет только хуже.
                  Если кто в курсе, то было бы интересно почитать…
                    +1
                    А какие конкретно палки ставит google? У меня тоже есть 1 приложение в google play, никаких проблем не замечал. Правда само приложение иногда падает, особенно, если его часто запускать и тут же закрывать, но это уже претензия к Qt.
                      0

                      Если я правильно понял, про что речь, то нельзя сказать, что Гугл намеренно вставляет палки, потому что они просто обновляют свой SDK, и проблемы сторонних индейцев их не сильно волнуют, у кого там что сломалось с новой версией API.


                      Ну и да, настроить окружение для разработки c Qt под Android это не всегда дело пяти минут. И хорошо бы в документации Qt этот процесс был рассмотрен более подробно (но опять же, невозможно предусмотреть, что Гугл изменит в следующий раз). А до тех пор будут писаться например такие манулы.

                      +1
                      Например, BMW прикатили вот такой концепт-кар

                      Это немного не BMW
                        0

                        Да, не совсем.

                        0
                        Есть какие-то планы по переводу QJSEngine и QML на ES6?
                          0

                          Есть задача как раз на эту тему, и там пилит лично Lars Knoll (CTO). Он говорит, что к релизу 5.12 (конец осени 2018) будет поддержка уже немалой части стандарта (но видимо ещё не всего полностью).

                          –1
                          могу попытаться объяснить, зачем

                          время от времени на формумах рунета кто-нибудь да и спросит, как написать "сайт" на QML. Не хотят люди изучать еще JS+React/Angular+HTML+CSS.


                          Лично мне WASM нравится больше чем WebGL стриминг.

                            0
                            Вопрос дилетанта, что проще использовать для представления кроссплатформенного GUI (Android/Win/Linux) новичку, Kivy или PyQT?
                            0
                            Лицензия 460$ в месяц с рожи…
                            Стоимость подбирается под возможности покупателя или одна для всех?
                              0

                              Там есть ещё опция для стартапов (но только для Application Development) — такая же лицензия, но без тех.поддержки, зато дешевле.


                              Но вообще да, это стандартная цена для всех. Вот если у вас команда от 5 разработчиков, то начинается прогрессирующая скидка. Или если у вас есть чем заинтересовать (готовы к сотрудничеству на маркетинговой почве, например), то тоже можно получить более интересные условия. Можно также купить подписку на несколько лет вперёд — стоимость будет значительно ниже.

                                0
                                А цена какая? Что-то я её найти не могу.
                                  0

                                  Там раньше были указаны цены, но сейчас зачем-то убрали. 100 долларов в месяц, если платить ежемесячно, и 80 долларов — если купить сразу на год.

                                0
                                Это дешевле, чем Visual Studio Professional.
                                +6
                                теперь условия лицензионного соглашения это запрещают — у вас должна быть хотя бы одна активная подписка, иначе нельзя ни вести разработку, ни продавать уже готовый продукт.
                                Но вообще, для фреймворка подписочная лицензия выглядит более-менее оправданной (по сравнению с подпиской на текстовый редактор).
                                В корне не согласен с последним выражением. Подписка на редактор ещё понятна: пока плачу — пользуюсь. А вот с фреймворком… им пользуются пока разрабатывают. После сдачи бинарных файлов в продакшн фреймворк могут вообще не запускать и в код не лезть(актуально для медикал, где сертификация стоит дурных денег). Не должно распространение готового продукта зависеть от наличия лицензии.
                                Это получается примерно так же, как если бы можно было бы открывать документ(на любом компьютере) только если продляется лицензия на текстовый редактор тем человеком который его создал.
                                  +1

                                  На всякий случай уточню: те продукты/устройства/приложения, которые вы уже продали/распространили, пока была действующая лицензия, после её истечения конечно же в тыкву не превратятся, и ваши пользователи/клиенты вполне могут продолжать ими пользоваться. Ограничение касается только будущих поставок/продаж.


                                  А так — да, я тоже с этим решением не согласен, но эффективный менеджмент его принял без меня.

                                    0
                                    Драконовские условия лицензии, ничего не скажешь.
                                    Вспомнилось тут:
                                    Ребята, что делают словарик yarxi (Смоленский Вадим и Всеволод Алексеев) объявляли краудфандинг на 1500$ чтобы embracedero RAD Studio купить и делать софтинку.
                                    Их многие корили, почему Delphi, а не Qt. Во бы они сейчас попали на бабло…
                                    Смоленский предвидел это!
                                      0
                                      Справедливости ради, (L)GPL версия Qt никуда не девается и для GUI там всё есть. Один только KDE чего стоит как пример, а он под свободной лицензией. Интересно, подпадает ли Plasma Mobile под необходимость покупать commercial лицензию, это же вроде как девайс. Или на девайсах тоже может быть lGPL версия Qt?
                                        0
                                        Почему нет? Пока не вносятся изменения непосредственно в код Qt и не производится статическая линковка, то допустимо использовать LGPL версию хоть в девайсах, хоть в Чубайсах.
                                          0
                                          То есть можно подключить свою закрытую библиотеку к проекту на Qt opensource и продать?
                                          Что то я никак не разберусь в разнице между GPL и LGPL.
                                            0
                                            да, можно. Разница между lGPL и GPL в copyleft. GPL «инфицирует» любой проект, который использует хоть что-то под GPL, нельзя использовать GPL код в закрытом проекте. LGPL разрешает закрывать код проектов, использующих LGPL код, при условии что LGPL-часть остается обособленной и не изменяется. Изменения LGPL части должны быть открыты.
                                            изменённые и расширенные версии [copyleft] программы обязаны быть свободными [тоже быть copyleft].
                                        0

                                        Как уже ответили, есть же Open Source версия, за которую денег платить не надо. И насколько я вижу, конкретно это приложение вполне может использовать Qt под LGPL.

                                          0
                                          Так то оно так, но у них коммерческий продукт. Закрытые исходники.
                                            0
                                            LGPL не требует раскрывать исходники.
                                    +1
                                    Переработка (new compiler pipeline) QML Engine;
                                    А что с лицензированием QML compiler? Окончательно передумали его открывать? Как я понимаю, разработка под iOS без Qt Quick Compiler не имеет смысла — всё будет тормозить и жрать батарею? На гитхабе есть нечто qmlrc, кто нибудь его пробовал, как оно? Как Ahead-of-Time/qmlcache соотносится с Qt Quick Compiler по производительности/энергоэффективности? Кажется очень соблазнительным разрабатывать GUI для C++ приложений под все побильные платформы разом с помощью Qt Quick, но терзают смутные сомненья. Не поделится ли кто подобным опытом?
                                      0
                                      В общем случае оно не тормозит и не особо жрет батарею на iOS, но тут зависит от сложности приложения.
                                        0

                                        Я несколько раз пытался разобраться в этом вопросе, но получал какую-то неполную и даже противоречивую информацию.


                                        Сначала Qt Quick Compiler обещали отдать в Open Source с релизом Qt 5.8. Однако, там было сказано "...integrate the Qt Quick Compiler functionality".


                                        В Qt 5.8 появился механизм кэширования QML, который, по заявлениям главы RnD, пришёл "на замену" Qt Quick Compiler и предоставляет сравнимый уровень улучшения производительности (времени загрузки приложения). И типа теперь Qt Quick Compiler "уберут".


                                        Я не совсем уверен, что замена это полноценная, равно как и не понимаю зачем его "убирать". Постараюсь выяснить (тут как раз это понадобилось для одного проекта) и напишу о результатах в дополнении к статье.

                                          0
                                          Постараюсь выяснить и напишу о результатах

                                          Выяснил и написал.


                                          Как Ahead-of-Time/qmlcache соотносится с Qt Quick Compiler по производительности/энергоэффективности?

                                          Производительность улучшилась (байт-код показал лучшие результаты по сравнению со сгенерированным C++), а насчёт энергоэффективности — как я понимаю, будет на том же уровне.

                                            0
                                            а что по поводу iOS?
                                              0

                                              А что iOS? Вот вы скомпилили QML в вашем проекте новым QQC, закидываете приложение на iPhone, оно запускается без интерпретирования QML/JS уже сразу с «оптимизированным» байт-кодом — всё то же самое как и на любой другой платформе. Или я чего-то не знаю про iOS?

                                                0
                                                JIT не работает.
                                                  0

                                                  Ну тогда вот и ответ. Хотя, как я написал в дополнении про новый QQC и кэшинг, JIT там позволит получить дополнительную оптимизацию, то есть «голой» интерпретации уже и так не будет. Но так как я в этом не очень разбираюсь, может я сейчас какую-то чушь сказал. Подождём официальную статью, там вроде должен будет сам CTO высказаться.

                                                    0

                                                    клонированный камент

                                            0

                                            Очень не хватает Qt Lite (легковесной версии с минимум виджетов и прочего).
                                            Тащить в небольшой проект 50+ МБ бинарников из за пары кнопок/менюшек как то не хочется.

                                              0

                                              Пресловутый Qt Lite как таковой "не существует", название это получило распространение только "благодаря" маркетингу.


                                              Qt Lite — это новая система конфигурации Qt и уменьшение зависимостей между модулями, благодаря чему как раз таки и можно пересобрать Qt в легковесную сборку, в которой будут только те компоненты, которые вам нужны. Что, кстати, и позволило запуститься на микроконтроллерах с 7 метровым приложением, потребляющим 4 метра оперативки.

                                                0
                                                Qt Lite — это новая система конфигурации

                                                Забавно.
                                                Я не знал, что такой вариант существует и это название уже "занято")

                                                  0

                                                  Да, я-то отвечал думая что вы как раз о нём )
                                                  Ну, вкратце, примерно два года назад анонсировали исследование на тему более тонкой конфигурации сборки Qt, и в релизе 5.8 она появилась, но маркетинг немного неправильно её продвинул в массы.

                                                0
                                                Очень не хватает Qt Lite (легковесной версии с минимум виджетов и прочего).

                                                допетерошные версии Qt вполне себе Qt-Lite

                                                0
                                                у вас должна быть хотя бы одна активная подписка, иначе нельзя ни вести разработку, ни продавать уже готовый продукт.

                                                Жесть, теперь еще больше контор задумается, стоит ли переходить или начинать на Qt разработку.
                                                  0

                                                  Ну остается же Open Source версия под LGPL, которая покрывает большую часть задач…
                                                  Или все хуже и придется искать альтернативу?

                                                    +1

                                                    Конечно остаётся. И я надеюсь, Qt никогда не откажется от своего лицензионного дуализма (будет доступен и под Open Source). Другое дело что большинство новых компонентов доступно только под GPL.

                                                      +1
                                                      Проблема в том, что невозможно перейти от lGPL проекта к commercial лицензии. Честно говоря, то движение по изменению правил лицензирования, которое мы наблюдаем последние годы со стороны Qt Company, вызывает недоумение. А еще выглядит так, будто направлением развития «библиотека для кросс-платформенного GUI» пренебрегли в пользу embedded/automotive, к сожалению. Имхо, для commercial Qt гораздо лучше подошла бы лицензия по типу Unreal Engine: плати роялти, если доход превышает определенную суму. Мне кажется, у Qt есть огромный потенциал быть «главной» кросс-платформенной библиотекой для GUI по умолчанию для мейнстримных мобильных и десктопных платформ, но стратегия лицензирования и развития, видимо, не способствует этому. Такое впечатление, что Qt отказались от активной конкуренции с Xamarin/React Native и прочими подобным технологиями, а жаль.
                                                        0
                                                        пренебрегли в пользу embedded/automotive

                                                        Зачем платить, когда можно пользоваться бесплатной версией? Вот и пришлось переориентировать бизнес.

                                                          0
                                                          Ради поддержки, дополнительных компонентов распространяемых в виде shared source с оплатой по типу Unreal Engine.
                                                            0
                                                            Дополнительные компоненты были(те же Qt Charts, Data Visualization), но были open source аналоги. Поэтому покупать особого смысла не было.

                                                            На Unreal Engine делают игры класса AAA, где большие бюджеты большие, поэтому там работает.
                                                              0
                                                              Были, но они были недостаточно интересные и слишком дорогие. Если бы они лицензировались по принципу «бесплатно при доходе <100$/год с приложения, далее 5%», то ими бы гораздо охотней пользовались, а так даже разбираться в них не хотелось, если не во всех проектах ими потом пользоваться можно. Зачем мне изучать новый компонент, который я смогу использовать только в больших коммерческих проектах (из-за цены), когда есть более универсальные аналоги?
                                                              где большие бюджеты большие

                                                              Зато GUI приложений делают на несколько порядков больше по количеству. Порог можно и в 100$/приложение/год установить.
                                                                0
                                                                Зато GUI приложений делают на несколько порядков больше по количеству.

                                                                А вы уверены в этом? Такие технологии как .NET, Electron вытесняют C++ как язык, для разработки GUI. При этом зачем платить, года я 7 лет обходился OpenSource решением?

                                                                  0
                                                                  Ну да, вполне уверен, что всех приложений с GUI создается больше чем только игр. Я же не говорил, на каких языках. Но вообще, это ещё один пример того, что Qt не очень активно двигаются в направлении кросс-платформенного GUI — можно было бы сделать также и C# bindings, аналогично тем, что есть для Python.
                                                                  Платить больше затем, что окупается. Также, как в случае с Unreal. Например за возможность пользоваться Qt Quick Compiler или Qt Charts можно было бы заплатить, если бы у них была прогрессивная цена лицензии (начиная с 0$). Правда пришлось бы допилить Qt Charts что бы он по всем направлениям превосходил QWT и другие аналоги, но если бы Qt Chart распространялся аналогично Unreal — комьюнити было бы более заинтересовано в его использовании и развитии. Наверняка и другие компоненты полезные есть.
                                                                  Обходится то можно, но если есть возможность для более комфортной разработки по адекватной цене — зачем отказываться? Qt Charts — это пример порочного круга: ими не хотят пользоваться т.к. они не всегда подходят из-за политики лицензирования, а изучать разные варианты одного и того же только ради разных типов лицензирования тоже не хочется, в результате и в крупных коммерческих проектах Qt Charts тоже выглядят не слишком привлекательно — QWT уже знаком, зачем переучиваться.
                                                                    0
                                                                    Ничего бы не вышло. За примером далеко ходить не надо. Все просили от PVS-Studio дешевый продукт, уверяли что будут покупать, но не покупали. Точно так же, было бы здесь.
                                                                      0
                                                                      Я не знаю, как распределяются доходы Qt Company, но подозреваю, что если бы они сделали лицензию основанную на роялти — ситуация никак не ухудшилась бы. Те, кто сейчас платят за дорогую лицензию и так платили бы за неё, для них это дешевле чем роялти, а те, кто сейчас пользуются LGPL версией или предпочли вообще не использовать Qt из-за цены хоть что-то бы, но заплатили. + Расширение абонентской базы и комьюнити. Я же не предлагаю им сделать дешевый или бесплатный продукт, я предлагаю ввести прогрессивную шкалу цен, что бы те, кто сейчас вообще не платят (и не пользуются) могли пользоваться, заплатив немного. В перспективе некоторые из них вырастут и будут с радостью платить больше или перейдут на работу в большие компании, которые платят за дорогие лицензии Qt. Станет больше Qt разработчиков на рынке, больше причин для компаний разрабатывать новые продукты на Qt. Ну как Unreal Engine.
                                                          0
                                                          невозможно перейти от lGPL проекта к commercial лицензии

                                                          Если вы про пункт в лицензионном соглашении, то случаи такого перехода были, но конечно больше в порядке исключения. Во всяком случае, это не невозможно.


                                                          выглядит так, будто направлением развития «библиотека для кросс-платформенного GUI» пренебрегли в пользу embedded/automotive

                                                          Тот же embedded может быть на Linux, на какой-нибудь RTOS, на Windows и так далее. Не говоря о том, что доля "простых" десктопных приложений по-прежнему составляет значительную часть прибыли от продажи лицензий, а там тоже Windows/Mac/Linux. По-моему, вполне кроссплатформенно.


                                                          мобильных

                                                          Ну вот тут да. Для мобильной разработки (если нужны только мобильные платформы, особенно если только одна), я лично взял бы что-то другое.

                                                            0
                                                            доля «простых» десктопных приложений по-прежнему составляет значительную часть прибыли от продажи лицензий
                                                            Но для развития этого направления делается сравнительно мало. Всё по инерции. Кроме того сегодня мало Windows/Mac/Linux что бы считаться «кросс-платформенным». То, что web вариант развивают — это хорошо, но гладкого перехода на Android/iOS и даже просто между ними не хватает. Хотелось бы, что бы можно было значительную часть приложения портировать с десктопа на мобильные платформы, а поскольку поддержка мобильных платформ хромает, то это не очень выходит.
                                                          0
                                                          надеюсь, Qt никогда не откажется от своего лицензионного дуализма (будет доступен и под Open Source
                                                          Не уверен, что они могут убрать (L)GPL лицензии для «старых» компонентов, даже если бы захотели. Там есть код, авторские права на который не принадлежат исключительно Qt Company, его пришлось бы переписать, но тогда появится несовместимый форк (силами комманды KDE, полагаю), который оставит QtCompany за бортом.
                                                            0

                                                            Всё так, но я уже не раз слышал от продаванов "а зачем нам Open Source, без него же легче продавать". Если вот таких кадров постепенно окажется большинство, а тем более в менеджменте, то можно всякого ожидать.

                                                              0
                                                              без него же легче продавать
                                                              Почему? Они какие-то доказательства этому утверждению приводят? Потому что аргументы против привести легко, я уже приводил тут. Почему они считают, что без открытой версии они вообще смогут что-то кроме automotive продать? Мне кажется, за пределами automotive главным ассетом Qt Company является широкое комьюнити, которому можно продать дополнительные услуги. Потому что конкурентных преимуществ, за которые стоит платить, у Qt самого по себе уже почти не осталось — конкуренты настигают. Раньше из конкурентов был только wxWidgets, но теперь ситуация другая. Да и весь этот устаревший хлам из собственных контейнеров, потоков, moc, qmake и прочего больше не нужен, только мешает. Раньше это было преимуществом, но теперь — наоборот. Выходит что главная ценность — что люди знают, как пользоваться Qt. Но для людей с технологией уже практически не осталось стимулов в неё вникать. Перспективы не видно.
                                                                0

                                                                Ну тут надо понимать, что зачастую они до этого занимались продажей "обычного" софта, где всё просто: нет денег — нет стульев. А тут вдруг двойная лицензия, в которой можно использовать продукт "забесплатно". Через пару месяцев они конечно "въезжают" в специфику, и меньше задают таких вопросов, но поначалу бывает вот так.

                                                                  0
                                                                  Всё таки многовато, два месяца, ведь идея простая: «Qt-платформа нам не принадлежит, мы не её продаём, а дополнительные компоненты и услуги для неё.» Вопрос в том, так ли ситуацию видит менеджмент. Судя по направлениям развития — не так.
                                                                0
                                                                а зачем нам Open Source, без него же легче продавать
                                                                Мне кажется, ответ тут: «мы не продаём Qt-платформу, она нам не принадлежит, мы продаём дополнительные компоненты к ней и число проданных компонентов зависит от числа пользователей основной части. Если основная часть была бы платной (если бы это было возможно вообще) — она бы никому не нужна была и, следовательно, компоненты тоже». Как Android.
                                                        +1
                                                        Очень хочется увидеть статьи на тему поддержки мобильной разработки iOS/Android. У нас у самих очень много опыта мобильной разработки на Qt, но нет возможности описывать этот опыт в статьях, к сожалению.
                                                          0

                                                          Продлять

                                                            0
                                                            Сразу несколько вопросов:
                                                            1. Почему на сайте доступен только онлайн-инсталлятор? На канале в 100 МиБ установка загрузка компонентов идёт со скоростью 300-400 КиБ/сек. Кажется, offline-инсталлятор даже в большем объёме загрузился бы быстрее.
                                                            2. Зачем при установке Qt насильно ставить Qt Creator? А если он не нужен? Или, как в моём случае, использую новую версию Qt со старым Qt Creator?
                                                            3. С одной стороны есть план перехода на QBS, а с другой Qt Creator 4.6+ на большом QBS-проекте стал работать безумно медленно (на маке у меня вообще слайд-шоу), когда 4.4 работает вполне шустро.
                                                              0
                                                              Не. Оффлайн тоже есть www1.qt.io/offline-installers/
                                                              Там при скачивании, чуть ниже download под стрелочкой ссылка
                                                                0
                                                                О, оффлайн нашёл, спасибо! Неочевидная ссылка, ожидал увидеть в other options :)
                                                                0
                                                                Почему на сайте доступен только онлайн-инсталлятор

                                                                Верно уже ответили, оффлайн тоже есть. Но вот кстати говоря Device Creation пакеты доступны только в онлайн установщике (оффлайновый бы весил ~50 ГБ, если не больше).


                                                                загрузка компонентов идёт со скоростью 300-400 КиБ/сек

                                                                Если вы про первый этап, где идёт загрузка мета-информации, то это известная проблема, в обозримом будущем должны оптимизировать. Если вы про загрузку уже самих компонентов, то это зависит от зеркала, к которому подключился установщик.


                                                                Зачем при установке Qt насильно ставить Qt Creator? А если он не нужен?

                                                                Тогда можно взять исходники из репозитория, и собрать только Qt :)
                                                                Но вообще "насильно" он ставится только в первый раз, а потом новая версия к вам попадёт только если вы пойдёте в Update components, а не в Add or remove components, насколько я помню.


                                                                на большом QBS-проекте стал работать безумно медленно (на маке у меня вообще слайд-шоу)

                                                                Я бы рекомендовал такое поведение зарепортить.

                                                                  0
                                                                  2. Про второй. А как выбрать правильное зеркало?
                                                                  3. Можно, но это нужно собирать. А цель-то — скачать и программировать. На вопрос «зачем насильно» всё же не ответили :)
                                                                  4. Ок, подумаю, как лучше сделать. Не присылать же весь qbs-проект :) Но всё-таки странно, т.к. не только у меня, но и у коллег, и не только на маке, но и на linux'е.
                                                                    0
                                                                    А как выбрать правильное зеркало?

                                                                    Немного костыльно, но можно. Почему это не интегрировали в сам установщик — возможно, чтобы все не навалились на одно зеркало, а работало автоматическое распределение.


                                                                    А цель-то — скачать и программировать

                                                                    Ну так вот он и ставится из коробки :)


                                                                    На вопрос «зачем насильно» всё же не ответили

                                                                    Я спрошу у команды релизеров.


                                                                    подумаю, как лучше сделать. Не присылать же весь qbs-проект

                                                                    Будет уже хорошо если вы напишете что после обновления c 4.4 до 4.6 сборка с Qbs стала тормозить, причём независимо от платформы.

                                                                      0
                                                                      Я спрошу у команды релизеров

                                                                      Я спросил.


                                                                      В старых версиях Qt при установке на одном из шагов выполнялась их "проверка" и "регистрация" в Qt Creator (те самые "auto-detected"), и этот процесс был организован не самым лучшим образом, потому что наличие Qt Creator требовалось обязательно.


                                                                      В новых версиях этой зависимости уже нет, но для обеспечения совместимости со старыми версиями Qt Creator по-прежнему нельзя исключить из списка устанавливаемых компонентов. Со временем старые версии "смоются" в историю, и тогда станет больше свободы действий.


                                                                      Если вы очень хотите иметь возможность исключить Qt Creator из списка устанавливаемых компонентов уже сейчас, то вы можете оставить такой отзыв в багтрекере, и может это ускорит процесс.

                                                                        0
                                                                        Ещё один случай: стоит системный Qt и системный же QtCreator, но нужно поставить дополнительно специфическую версию Qt. И не хочется при этом получать ещё и QtCreator.
                                                                  +2

                                                                  Странное решение. В мире становится все больше кроссплатформенных фреймвлрков а они гайки прикручивают. Пилчт сук на котором сидят.

                                                                    0
                                                                    Так это на мобильных все больше кроссплатформенных, а у qt охват гораздо шире и, я бы сказал, что основное все-таки не мобильное направление (хотя они и активно пытаются пролезть и сюда)
                                                                      0
                                                                      активно пытаются пролезть и сюда
                                                                      Не очень, имхо. Реально необходимые вещи не делаются: нет активности в направлении улучшения native-like look, не переходят на Quick Compiler как основной инструмент работы с QML, а вместо этого пилят какие-то непонятно зачем нужные JIT и AOT, не переходят на контейнеры и механизмы стандартной библиотеки, а вместо этого поддерживают свои клоны, которые уже устарели. В направлении QtCore и всего что связано именно с кросс-платформенным GUI (в первую очередь X11/Win/Mac/Android/iOS, а не embedded) инновации забуксовали.
                                                                        0
                                                                        JIT штука нужная. Мы когда делали доклад на cppconf.ru, то получали поразительные бенчмарки. JIT очень важен, если хочется в будущем логику писать на чем то отличным от C++.
                                                                          0
                                                                          Какие у JIT преимущества по сравнению с Qt Quick Compiler? Мне кажется, Qt Quick Compiler — это более универсальный подход, который также даёт более качественный результат. Зачем тогда JIT? Что бы отдельно лицензировать Quick Compiler?
                                                                            0
                                                                            When you use this add-on, the application's startup time is significantly improved and you no longer need to deploy .qml files together with the application.

                                                                            Пруф. При этом не исключается наличие JIT, для оптимизации. Сделано для такие систем как iOS, где нельзя сделать нормального JIT.

                                                                              0
                                                                              Так там написано, что время запуска уменьшается при использовании Qt Quick Compiler, а не JIT. JIT медленнее Qt Quick Compiler и они не совместимы, что логично, т.к. JIT-ить то, что уже скомпилировано не получится.
                                                                              Читаем дальше:
                                                                              The popular Just-in-time (JIT) compilation technique is used to generate machine code on the fly, which speeds up the execution of JavaScript and QML binding expressions.
                                                                              Unfortunately this approach has some disadvantages: On application startup, several .qml files need to be parsed and dynamically compiled before the user interface can become visible and interactive.

                                                                              Получается, что QML JIT — это недо Qt Quick Compiler.
                                                                                0
                                                                                Не путайте разметку QML и логику на JS. Иначе бы Node.js не интерпретировала бы JS, а все бы компилировали сразу в нативный код.
                                                                                  0
                                                                                  Я и не путаю. Compiler и JIT не совместимы, Compiler быстрее:
                                                                                  Compiled Qt Quick is an elegant solution to these problems: .qml files as well as accompanying .js files can be translated into intermediate C++ source code. This entirely eliminates the need of deploying QML source code, it reduces the application startup time and allows for a much faster execution on platforms that do not permit Just-in-time compilation.
                                                                                  На платформах с JIT разнецы может не быть, если повезет, но JIT не быстрее.
                                                                                    0

                                                                                    Они не говорят, что компилируют весь JavaScript. Они говорят про QML, который является языком разметки. Т.к. разметка достаточно формальна, то можно из


                                                                                    Button {
                                                                                        text: "Button"
                                                                                    }

                                                                                    с генерировать создание объекта на стороне C++, а не через интерпретацию. Раньше Digia не рекомендовала писать бизнес логику на JS, т.к. это медленно, но с JIT это станет возможно.

                                                                                      0
                                                                                      А есть ссылка на источник? Потому что
                                                                                      .qml files as well as accompanying .js files can be translated into intermediate C++ source code.
                                                                                      Говорит о том, что js тоже компилируется.
                                                                                        0

                                                                                        … и это действительно так — "старый" Qt Quick Compiler "исключал" JIT. Я сейчас как раз вношу дополнение об этом в статью.

                                                                    0
                                                                    У меня создается впечатление, что для Qt Company Qt как «слой абстракции над платформо-специфическими графическими, input, connectivity, location и прочими API» более не является первостепенным направлением. Я правильно понимаю?
                                                                      0

                                                                      Можно конечно пойти и спросить у CTO, но у меня такого впечатления нет. Насколько я вижу, qtbase — один из наиболее активных репозиториев.

                                                                        0
                                                                        Но в то же время Вы сами говорите, что для разработки под Android/iOS вы бы не выбрали Qt? Мобильные платформы в данном контексте не входят в «кросс-платформенность»?
                                                                          0

                                                                          Когда у меня из таргет-платформ только iOS, например, то не выбрал бы, и я так и написал в том комментарии.


                                                                          Но ведь они поддерживаются, и разрабатывать под них можно. Вот скажем у меня какое-нибудь погодное приложение / текстовый редактор / туду-лист / дашборд какого-нибудь мониторинга, и у моих клиентов Windows, Mac OS, Android и iOS. Я беру Qt и пилю на все 4. Специфичная фигня типа телефонной книги мне не нужна, потому возможностей Qt вполне хватает. Кросплатформенно получилось? По-моему, да.

                                                                      0
                                                                      Очень хотелось бы увидеть в свободной доступе инструмент для компиляции qt исходников из embedded edition, ибо простыня флагов не спасает, когда нужны определенные опции (не спасает из за отсутствия информации, что и когда можно отключить, особенно для linux, с его x11)
                                                                        0
                                                                        в свободном доступе

                                                                        Если вы про Qt Configuration Tool, то в Open Source он вряд ли появится. Пока все ждут чтобы он хотя бы перестал быть "эксклюзивом" Device Creation.


                                                                        отсутствия информации, что и когда можно отключить, особенно для linux, с его x11

                                                                        Ну вот это как раз почему он коммерческий компонент.
                                                                        "Не разбираешься в системе конфигурации? Плати денег и можешь просто щёлкать мышью по переключателям".
                                                                        Звериный оскал капитализма.

                                                                          0
                                                                          Да да, о нем самом.
                                                                          Если так как Вы говорите, то да, печально.
                                                                        +1
                                                                        А нет ли планов сапгрейдить те фичи/модули, которые во многом повторяют функциональность новых возможностей C++17?
                                                                        Например, чтобы умные указатели можно было создавать аналогом std::make_unique или std::make_shared?
                                                                          0

                                                                          Не все могут использовать C++17 в своих проектах (некоторые не могут и C++11, и потому сидят на 5.6). И да, ряд вещей из std "продублирован" в Qt. Но я не понял, что именно вы хотите сапгрейдить.

                                                                            –1
                                                                            Раз перешли на C++11, не вижу причин отказываться от C++17, по крайней мере в следующем LTS.

                                                                            А вообще, если мечтать, то в идеале хотелось бы (не в порядке важности):
                                                                            • выкинуть qmake и qbs[1], перейти на современный cmake как основную платформу
                                                                            • выкинуть контейнеры типа QVector, QThread и перейти на stl-аналоги
                                                                            • выкинуть QVariant и перейти на std::any или может даже std::variant
                                                                            • выкинуть QJson и сделать органичную поддержку RapidJson
                                                                            • выкинуть Qt Test и сделать органичную поддержку Catch + адаптировать GUI часть Qt Test
                                                                            • улучшить возможности для native-like look на всех платформах
                                                                            • отказаться от повсеместного использования сырых указателей и перейти на unique/shared_ptr
                                                                            • выкинуть moc (уже есть). Возможно, забить на совместимость и переработать внутренние механизмы так, что бы без moc макросы стали не такими стрёмными.
                                                                            • Объединить и открыть Quick compiler и JIT
                                                                            • Для того что распространяется по GPL добавить Ureal-engine-like опцию лицензирования (плати если начал зарабатывать)
                                                                            • Продолжить развитие поддержки mobile платформ, что бы не было ограничений типа "если мне не нужна телефонная книга".

                                                                            [1]: Теоретически qbs мог бы стать даже лучше cmake и вытеснить его, но судя по истории развития qbs, Qt Company не имеет подобных амбиций по отношению к qbs, а снова пилит свою собственную систему сборки без претензий на универсальность (в отличии от cmake), и то не успевает.
                                                                              0
                                                                              А ну и ещё не останавливаться на PySide и аналогично поступить с bindings для других языков.
                                                                              0
                                                                              Но я не понял, что именно вы хотите сапгрейдить.

                                                                              Например, хочу чтобы вместо кода
                                                                              QSharedPointer<LongClassName> handler(new LongClassName());

                                                                              был код
                                                                              auto handler= make_shared<LongClassName>());

                                                                              — без повторения названия класса и с выделением памяти для raw-указателя и reference counter'а в одной области памяти, одной операцией — с соответствующей выгодой в производительности.
                                                                              Хочу, чтобы они стали moveable.
                                                                              Не очень вникал, но вроде некоторые части std правильнее работают с многопоточным доступом, что тоже должно дать выгоду в производительности.
                                                                            0
                                                                            Извините, я раньше уже спрашивал, habr.com/post/325198/#comment_10143878, но нет ли каких-нибудь новостей по вопросу возможности создания своего отладчика для QJSEngine скриптов? Наверное отсутствие такого функционала является одной из причин по котором QtScript все еще не удален из последних версий Qt?
                                                                              0

                                                                              Ответ не сильно изменился, к сожалению. Над QQmlEngine/QJSEngine работа идёт (new compiler pipeline и прочая оптимизация), так что можно ожидать наконец-таки возможности отладки, но никаких конкретных сроков нет.


                                                                              Пока можно проголосовать за реквест. Чем больше голосов, тем выше приоритет (который, кстати, уже выше обычного, потому что реквест поступил от коммерческого пользователя).

                                                                                0
                                                                                Спасибо, проголосовал, не теряю надежды. )
                                                                              0
                                                                              Какова судьба QtWidgets в будущем? Они буду развиваться и поддерживаться или будут объявлены устаревшими и будут удалены? Как, например, случилось с QtScript.
                                                                                0

                                                                                (триста тридцать пять)
                                                                                Конечно будут поддерживаться, и удалять их планов нет. Но и нового функционала не ожидается — Qt Widgets считаются стабильными и завершёнными (всё-таки больше 20 лет разработки), дальше только поддержка. Такое бывает.


                                                                                Если чего-то не хватает — создавайте реквест, и если будет много голосов за него, то может что и случится. Тем более что относительно недавно наняли целого продакт манагера для десктопного направления, правда он пока больше с PySide занят.

                                                                                0
                                                                                На Qt форуме есть тема, где обсуждается вопрос добавления iOS native style по аналогии с Material Style. V-Play уже сделали такой Qt Native iOS Style. Рассматривается ли возможность купить эту разработку у V-Play и сделать её частью Qt Quick вместо того что бы ждать «later — there's a chance to get an iOS style too»? Со стороны кажется, что это настоящий win-win. Qt получит iOS style раньше, а деньги, которые пришлось бы потратить на разработку, просто отдадут V-Play, которые иначе ничего не получат, если Qt Company сами запилят свой аналог.
                                                                                  0

                                                                                  Насколько я знаю, там есть какие-то юридические проблемы с копированием/воспроизведением стиля iOS. Почему таких проблем не возникло у V-Play — не знаю. Я могу спросить у команды Qt Quick Controls, что там за история.


                                                                                  Насчёт покупки разработок V-Play — если не ошибаюсь, то V-Play купили у The Qt Company лицензию на создание собственного SDK, так что покупка "в обратную сторону" кажется маловероятной :)


                                                                                  В остальном — добавление новых стилей не входит в список первоочередных задач (как минимум TableView в этом списке стоит гораздо выше). Хотя я и согласен, что наличие стиля под Android и отсутствие стиля под iOS выглядит странно.

                                                                                    +1
                                                                                    Я могу спросить у команды Qt Quick Controls, что там за история

                                                                                    Спросите, пожалуйста.
                                                                                      0
                                                                                        0
                                                                                        Спасибо за ответ! Было интересно! Мне кажется, вариант использовать нативные API, накладывает серьезное ограничение, как и описано в блоге: «API is small and strict so that it can be realized on all supported (and future) platforms». А значит количество таких функций будет очень небольшим («small» — только то, что везде можно реализовать). То есть это API будет уступать по возможностям как Android API так и iOS API, и тогда вопрос, зачем оно вообще надо? Хотя есть примеры React Native и Eto. Не знаю, правда, на сколько широкий набор фич и гибкость они смогли реализовать.
                                                                                        Вариант же имитации native look потенциально не имеет таких ограничений — можно реализовать полный набор фич, в т.ч. допилить native feel аналоги компонентов недоступных на платформе, было бы достаточно разработчиков. Но вопрос одобрения со стороны Apple, конечно, остаётся открытым.
                                                                                        часть «feel» — вообще нереальна. То есть GUI может и будет выглядеть «родным», но первый же свайп / скролл / пинч выдадут «подделку».
                                                                                        Неужели настолько сложно сделать имитацию, которая для, скажем, 95% пользователей будет неотличимой?
                                                                                        если мы будем выдавать наш стиль за «родной» стиль iOS, то Apple может сказать что-то неприятное
                                                                                        А зачем «выдавать», можно открыто говорить, что это имитация. Если внешне они будут почти одинаковыми по ощущениям — кому какое дело?
                                                                                          0
                                                                                          Неужели настолько сложно сделать имитацию, которая для, скажем, 95% пользователей будет неотличимой?

                                                                                          Я когда после Mac OS/iOS беру в руки ведро или сажусь за Шиндошс ПЦ — у меня появляется ощущение, что продукция Apple ещё очень дёшево стоит, и они могли бы и в пять раз больше просить. Сложно даже начать представлять объём труда, вложенный в UX, и каких размеров команда занималась этим на протяжение стольких лет. Повторить их результат в несколько раз меньшей командой будет очень сложно и займёт очень много времени, даже имея оригинал для копирования.


                                                                                          Это такое моё мнение. Команда QQC просто сказала: "...to imitate the "feel" is even harder".

                                                                                            0
                                                                                            Повторить их результат в несколько раз меньшей командой будет очень сложно и займёт очень много времени, даже имея оригинал для копирования.
                                                                                            Но, всё же, далеко не так сложно как его разработать с 0, так что команда как у Apple не понадобится. Да и не уверен я, что команда, которая занималась контроллами для iOS настолько уж большая.

                                                                                            На счёт Anroid/iOS я даже имея бесплатный (рабочий) iPhone не сделал бы выбор в пользу iOS — каждый раз раздражаюсь, если приходится брать в руки iPhone. До 2012 года качество исполнения iOS действительно было выше чем Android, но сегодня этого уже нельзя однозначно утверждать. С MacOS то же самое, никаких преимуществ даже над KDE Neon в UX я не вижу, а вот кучу нестандартных решений, где на то нет необходимости кроме «что бы отличаться» — вижу, и это раздражает. А по цене они и так на 30-50% больше просят чем Samsung и Google, если станут просить ещё больше — продажи наверняка в разы сократятся. Они и так уже вынуждены сокращать маржу, в этом году Samsung догнал Apple по доле полученной прибыли (не дохода).
                                                                                          0
                                                                                          Теперь стало проще. Делаем все на Android Material и собираем сразу под 2 платформы: Android и iOS. И проще работать, и дизайн Android нет так уж и плох, хотя и не нативен.
                                                                                    0

                                                                                    По результатам голосования за статью о Qt на микроконтроллерах с большим отрывом лидирует вариант за публикацию, так что автор (Trilla) вчера её туда отправил, однако сегодня ему пришёл ответ от НЛО:


                                                                                    Публикации рекламного характера вне корпоративного блога и хаба «Я пиарюсь» запрещены правилами сайта. Пожалуйста, удалите из вашей публикации все элементы рекламы

                                                                                    Ну, значит не будет статьи.

                                                                                      0
                                                                                      А можно глянуть на черновик или на сохабре может есть?
                                                                                        0

                                                                                        Если тут так и не получится, то автор хотел в своём личном блоге опубликовать, так что будет ссылка.

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое