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, для получения более подробной информации обратитесь к документации .