Реализовать с помощью QML или C++?

Я только недавно начал изучать Qt и нашел QML довольно интересным для реализации компонента пользовательского интерфейса. Прежде чем проект действительно стартует, у меня есть несколько вопросов:

  • Для проекта с новым стартом я должен просто использовать QML? Создан ли QML для замены QWidget?)
  • Если я выберу QML, нужно ли что-то еще реализовать на C++? Или лучше реализовать на C++ для лучшей производительности? (Я знаю, что некоторые настраиваемые компоненты пользовательского интерфейса можно интегрировать с помощью плагина.) Какая связь между виджетами QML и C++?
  • Что касается производительности или рендеринга, лучше ли QML, чем собственный виджет C++?

person Robert    schedule 02.09.2013    source источник
comment
Существуют ограничения производительности рендеринга на основе QWidget, которые невозможно преодолеть при использовании API-интерфейсов в стиле QPainter. Это то, что многие люди не понимают, потому что они не бесконечно знакомы с тем, насколько устарел API в стиле QPainter. Он восходит как минимум к оригинальной MacOS 1984 года, если не раньше. Когда он был разработан, современные графические процессоры были научной фантастикой. Невозможно заставить этот API работать хорошо. Всегда есть способ заставить его работать хорошо в любом конкретном случае, но нет способа обобщить его. Граф сцены Qt Quick 2 — это будущее с точки зрения производительности. Это все С++!   -  person Kuba hasn't forgotten Monica    schedule 04.09.2013
comment
В общем, создайте свой графический интерфейс с помощью QML и выполните некоторые легкие вычисления с помощью JavaScript. Всякий раз, когда вычисления или операции были сложными или вам не хватало JavaScript, используйте C++. Также вы можете использовать элементы управления QtQuick в файле QML. Имейте в виду, что подход MVC является хорошим выбором для приложения QML+C++.   -  person S.M.Mousavi    schedule 27.09.2015


Ответы (2)


Когда вы начинаете вопрос с «Должен ли я использовать», это довольно хороший намек на то, что SO может быть неподходящим местом для этого. Тем более, что есть только ответы, начинающиеся с «Это зависит от...».

QML не предназначен для замены QWidget. Это другая техника. Какой из них использовать, зависит от ваших требований.

Нужно ли вам реализовывать дополнительные вещи на С++, зависит от вашего проекта. Что-то проще в C++, что-то в QML. А некоторые вещи вообще невозможны в QML.

Между виджетами QML и C++ нет никакой связи.

Да и производительности QML в большинстве случаев более чем достаточно. Почти во всех случаях QML используется для создания пользовательских интерфейсов. Я сомневаюсь, что во многих случаях нажатие кнопки или открытие папки Dropbox критично для производительности.

person Greenflow    schedule 02.09.2013

У меня была возможность задать этот вопрос нескольким экспертам Qt сегодня на Всемирном саммите, и общее мнение заключалось в том, что, поскольку рендеринг компонентов QML может выполняться с помощью аппаратного ускорения, он предпочтительнее для приложений, требующих высокопроизводительной графики, например автомобильных приборных панелей. Виджеты OTOH, кажется, используются для настольных приложений. Еще одно соображение заключается в том, что, хотя виджеты могут быть оформлены с помощью Qss (версия Qt для Css), компоненты QML не могут.

В приложениях на основе QML функции, требующие больших вычислительных ресурсов, обычно пишутся на C++.

ХТХ,

Эрик Джи

person eric gilbertson    schedule 20.10.2016