Соответствие языка Qt vs QML - PullRequest
0 голосов
/ 02 мая 2018

Итак, я новичок в Qt, и я собираюсь ознакомиться с Qt Graphics. Тем не менее, большинство руководств в Интернете предлагают использовать QML вместо Qt C ++, когда дело доходит до работы с графикой.

Вот мой вопрос: В чем разница между Qt C ++ и QML? Что дает нам QML, чего нет у Qt C ++?

1 Ответ

0 голосов
/ 02 мая 2018

UI Technology

На самом деле это не столько вопрос QML против C ++, сколько вопрос о том, какую технологию пользовательского интерфейса использовать с Qt:

  • QtWidgets (код, написанный на C ++)
  • QtQuick (код, написанный на QML / JS)
  • HTML5 (через WebEngine, встроенный в виджет или элемент QtQuick)
  • OpenGL (встроен в виджет или элемент QtQuick)

Оставляя в стороне HTML5 и OpenGL, вопрос QtWidgets против QtQuick обсуждался в другом месте, например, на Qt Quick против Qt Widget и на этой презентации Qt DevDays 2014 .

Мое личное мнение: Используйте QtWidgets для традиционных настольных приложений и QtQuick для мобильных и встраиваемых (устройства с сенсорным экраном), если у вас нет веских причин для иного решения. QtWidgets имеет лучшую и более зрелую поддержку традиционных элементов управления рабочим столом, тогда как QtQuick лучше подходит для анимации и полностью настраиваемых стилей.

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

Язык

При выборе QtWidgets, язык всегда C ++ (хорошо, если вы не используете привязки Python). Хотя вы можете использовать инструмент Qt Designer для визуального создания пользовательских интерфейсов, в конце они компилируются в C ++.

При выборе QtQuick, языком для частей пользовательского интерфейса будет QML и JavaScript. Однако в любом умеренно большом приложении QtQuick в какой-то момент у вас также будет часть C ++ - например, для взаимодействия с другими библиотеками C и C ++, для операций, у которых нет связанного JavaScript API, или просто для более быстрого и более удобного кода чем JS. К классам и объектам C ++ можно получить доступ из QML, для получения более подробной информации обратитесь к документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...