Я'запутался в QML, QtQuick 1.0 и QtQuick 2.0. В чем разница между ними?
Я использую QtCreator 2.8.1, основанный на Qt 5.1.1. Я хочу разработать настольную программу, какую технологию мне следует использовать?
QML - это название языка (так же, как и C++, который является другим языком...)
QtQuick - это набор инструментов для QML, позволяющий разрабатывать графический интерфейс на языке QML (есть и другие наборы инструментов для QML, некоторые графические, как Sailfish Silica или BlackBerry Cascade, а некоторые неграфические, как QBS, который является заменой QMake/CMake/make...)
QtQuick 1.x был основан на Qt4.x и использовал API QPainter
/QGraphicsView
для рисования сцены.
QtQuick 2.X был представлен в Qt5.0, основан на Scene Graph, слое абстракции OpenGLES2, сильно оптимизирован.
В Qt5.1 Scene Graph был усовершенствован для использования многопоточности (QtQuick 2.1). В Qt5.2 Scene Graph еще более оптимизирован для уменьшения количества обращений к CPU/GPU и использования памяти.
Движок QML был основан на JsCore (JS движок Webkit) в Qt4.x и был переработан на V8 (JS движок Google Chrome) в 5.0, но это не позволяет использовать его на мобильных телефонах и особенно на iOS, поэтому Qt5.2 представил новый движок QML, названный V4VM, созданный ребятами из Qt.
Есть также QtQuick Controls, который, по сути, является набором виджетов нативного вида, основанных на QtQuick. Изначально он предназначался для настольных компьютеров, но в Qt 5.4 появился нативный L&F для Android, основанный на теме holo. Тема material, а также тема для iOS находятся в разработке, но не доступны в текущем выпуске Qt (5.5). Некоторые элементы управления были доступны только для Enterprise, но в Qt5.5 их переименовали в Extras, и теперь они доступны для всех лицензий. Ведется еще одна разработка под названием QtQuickControls 2, которая представляет собой полную переработку Controls с целью повышения производительности, предназначенную для легких встроенных пользовательских интерфейсов, она должна быть на стадии Tech Preview в Qt 5.6.
В Qt5.5 появился новый модуль QtQuick3D, который дает возможность создавать 3D приложения/игры, используя язык QML. Он не использует SceneGraph, который слишком ориентирован на 2D/2.4D. Для этого используется новый движок под названием FrameGraph.
Если вы разрабатываете современные приложения, вам следует использовать Qt5.x + QML 2.x + QtQuick 2.x, чтобы охватить как можно больше пользователей.
С Qt, в целом, всегда следите за обновлениями, потому что они добавляют больше возможностей, больше производительности и больше платформ.
ЭДИТ: Пожалуйста, обратитесь к @TheBootroo для лучшего ответа.
Хотя мой ответ был принят ОП, я хочу пересмотреть (или даже) удалить свой ответ.
Мой ответ был основан на личном опыте в отношении Qt 5.2 в 2013 году, некоторые из которых сегодня уже не актуальны:
Еще в Qt 5.2 при создании приложения Qt Quick важным вопросом было то, является ли приложение QtQuick 1.x или QtQuick 2.x. Это не только влияло на доступные компоненты, но и изменяло способ отображения приложения.
Еще в 2013 г:
Приложения QtQuick 1.x часто выбирали, если вам нужно было использовать старые операционные системы (например, Windows XP) или старое оборудование (например, OLPC), потому что компоненты пользовательского интерфейса QML, такие как кнопки, отображались компонентами, родными для вашей ОС. Однако это означало, что вы ориентируетесь на набор компонентов пользовательского интерфейса с наименьшим общим знаменателем и что ваш пользовательский интерфейс может отличаться от платформы к платформе.
Приложение QtQuick 2.x было выбрано для более последовательного кроссплатформенного вида, но оно требовало, чтобы ваша платформа реализовала OpenGLES в достаточной степени, иначе приложение может не загрузиться. Это, к сожалению, ограничивало ваше приложение только новейшими компьютерами и устройствами, поддерживающими OpenGLES.
Когда я писал свой первоначальный ответ, это заставило меня рекомендовать QtQuick 1.x в некоторых сценариях вместо QtQuick 2.x.
Однако с тех пор Qt 5+ теперь позволяет вам использовать ANGLE на Windows, который обеспечивает высокопроизводительную совместимость с OpenGL на настольных компьютерах Windows путем перевода вызовов в Direct3D, который имеет гораздо лучшую поддержку драйверов.