Моя долгосрочная цель — сделать HCI-разработку для встраиваемых устройств, и под встраиванием я действительно имею в виду, а не телефонные устройства.
Я работаю над виджетами Qt уже месяц, по некоторым причинам избегая Qt Quick (я боялся, что код QML не был оптимизирован), но вчера я посмотрел это видео:YouTube
В конце докладчик говорит: «Если вы делаете встраиваемый продукт в наши дни, используйте Qt Quick, особенно сейчас в 5.8. Нет оправдания тому, чтобы не использовать Qt Quick»
Наоборот, он объясняет, что для встраиваемых устройств мы должны использовать код c ++, а не JavaScript.
Я действительно не понимаю, значит ли это, что мне нужно создавать все свои объекты в коде c ++ и создавать свою архитектуру с использованием Qt Quick?
Я не совсем понимаю, чего хочет от нас Qt. Это просто общение, поскольку они не хотят оптимизировать старые и стабильные виджеты Qt или Qt Quick действительно решение для встраиваемых устройств?
Я лично думаю, что Qt не является решением для встраиваемых устройств, поскольку они продолжают развиваться, изменяя стратегию, и, кажется, не знают, куда они идут.
Я прошу прощения за этот неалгоритмический вопрос, и спасибо за все ваши ответы.
Я не могу говорить о намерениях разработчика и не могу говорить за других разработчиков. Я могу говорить только с тем, что я понимаю, как с разработчиком, который разрабатывает встраиваемые устройства в течение 40 лет (извините за то, что я работаю с числами).
C ++ или JavaScript? Я не думаю, что этот вопрос имеет слишком много общего с тем, используете ли вы QtQuick или нет. Конечно, вы можете встраивать JaveScript в код QML (с ограничениями), но вы также можете использовать C ++ в той же кодовой базе (только не встроенной в QML). Тогда есть Python. И Qt, и QtQuick являются средами программирования и в некоторой степени не зависят от языка.
Я считаю, что QtQuick — это хороший, переносимый способ создания кода вашего пользовательского интерфейса. В моем текущем проекте (многоосная промышленная система сервоконтроля) я использую QML для пользовательского интерфейса (при необходимости немного JavaScript), C ++ для большей части обработки более высокого уровня (например, управление сетью и потоковая передача данных). , C и ассемблер для нижних уровней (те подпрограммы, выполняемые в UC и DSP). QML и C ++ хорошо взаимодействуют, на мой взгляд.
Я полагаю, что докладчик приходит к мысли, что большую часть, если не всю вашу бизнес-логику, следует выполнять с помощью серверной части модели C ++. Однако всю свою логику можно выполнить только в QML со встроенным JavaScript, поскольку JS — интерпретируемый язык, его производительность во время выполнения может быть ниже, чем скомпилированный код C ++ (в зависимости от того, насколько хорошо написан C ++).
По сути, вы хотите использовать JS только для манипулирования графическими компонентами при использовании C ++ с моделями QObject для обновления отдельных свойств элементов QtQuick.
Это упоминается в вики Qt Quick Best Practices,
https://wiki.qt.io/Qt_Quick_Best_Practices