Difference between qt qml and qt quick
Solution 1
EDIT: Please refer to @TheBootroo for a better answer
Although my answer was accepted by the OP, I want to revise (or even) remove my answer.
My answer was based on personal experiences with respect to Qt 5.2 in 2013 some of which is no longer valid today:
- QML is Qt Meta Language or Qt Modelling Language is a user interface markup language.
- QtQuick (both QtQuick 1.x and QtQuick 2.x) uses QML as a declarative language for designing user interface–centric applications.
Back at Qt 5.2 when you built a Qt Quick Application a significant question was whether the app was QtQuick 1.x or a QtQuick 2.x. Not only did this affect the components that were available, but, it altered how the application was rendered.
Back in 2013:
QtQuick 1.x applications was often chosen if you had to target older operating systems (e.g. Windows XP) or older hardware (e.g. OLPC) because the QML UI components such as Buttons were rendered by components native to your OS. However, this meant you were targeting a lowest common denominator set of UI components and that your UI experience may vary from platform to platform.
QtQuick 2.x application was chosen for a more consistent cross platform look, but, it required that your platform implemented OpenGLES sufficiently else, your application may fail to load. This, unfortunately, restricted your application to only the newest computer and devices that implemented OpenGLES.
When I wrote my original answer, this lead me to recommend QtQuick 1.x in some scenarios over QtQuick 2.x.
However, since then, Qt 5+ now allows you to target ANGLE on Windows which brings high performance OpenGL compatibility to Windows desktops by translating calls to Direct3D, which has much better driver support.
Solution 2
QML is the name of the language (just like C++, which is another language...)
QtQuick is a toolkit for QML, allowing to develop graphical interface in QML language (there are other toolkits for QML, some are graphical like Sailfish Silica or BlackBerry Cascade, and some are non-graphical like QBS which is a replacement for QMake/CMake/make...)
QtQuick 1.x was Qt4.x-based and used the QPainter
/QGraphicsView
API to draw the scene.
QtQuick 2.X was introduced with Qt5.0, based on Scene Graph, an OpenGLES2 abstraction layer, highly optimized.
With Qt5.1, Scene Graph was enhanced to use multithreading (QtQuick 2.1) With Qt5.2, Scene Graph is yet a lot more optimized to reduce CPU/GPU calls and memory usage
QML engine was based on JsCore (JS engine of Webkit) in Qt4.x and was rebased on V8 (JS engine of Google Chrome) with 5.0 but this disallows to use it on mobiles and especially on iOS, so Qt5.2 introduced a new QML engine, named V4VM, created by/for Qt guys.
There are also the QtQuick Controls, which is basically a set of native-looking widgets, based on QtQuick. It was originally meant for desktop, but Qt 5.4 introduced a native L&F for Android, based on the holo theme. A material theme, as well as an iOS theme, are in development but not available as of current Qt release (5.5). Some controls were Enterprise only, but in Qt5.5 they got renamed as Extras, and they are now available for all licenses. Another development is undergoing, named QtQuickControls 2, which is a full rewrite of Controls, to gain better performance, aimed for light embedded UIs, it should at Tech Preview stage in Qt 5.6.
From Qt5.5, there is a new module named QtQuick3D, which gives ability to create 3D apps/games using QML language. It doesn't use SceneGraph which is too 2D/2.4D oriented. A new engine is named FrameGraph for this use.
If you develop modern apps you should use Qt5.x + QML 2.x + QtQuick 2.x, to touch the most vast userbase possible.
With Qt, in general, always follow the updates because they add more features, more perfomances and more platforms.
Related videos on Youtube
骑天大圣
Updated on July 05, 2022Comments
-
骑天大圣 almost 2 years
I'm confused with QML, QtQuick 1.0 and QtQuick 2.0. What's the difference between them?
I use QtCreator 2.8.1 based on Qt 5.1.1. I want to develop a desktop program, which technology should I use?
-
mlvljr over 10 yearsLook here: qt-project.org/doc/qt-5.1/qtdoc/qtmodules.html (qml and quick are basically two sides of the same thing -- the tech itself and the controls library; modern version is qml2)
-
骑天大圣 over 10 yearshttp://qt-project.org/wiki/QML1-vs-QML2 the document about it
-
-
TheBootroo over 10 yearsYou are quite wrong on the QML2 engine, look at my answer : QML2 is simply the rewrite of the QML1 engine upon the V8 engine. Now it's being ported on a new engine V4VM because V8 is NOT compliant with iOS ! So as the guy who posted the question is using Qt5.1, he will NOT run on iOS until he updates to Qt5.2+...
-
Stephen Quan over 10 yearsThanks @TheBootroo. The intent of my answer was why you would choose QML2 over QML1. I wasn't being specific on Qt5.1.1 even though that's what the OP was using. I clarified my answer citing QML2 as a means of future proof, but, it still is true, that QML1 may be your only choice if your hardware doesn't sufficiently deliver enough OpenGL that QML2 requires.
-
peppe over 10 yearsI would remove the whole "if you aren't interested in developing for iOS and Android (i.e. exclusively on Windows platform)" part. QQ2 applications happily run on Windows, Linux, OSX, QNX.
-
Stephen Quan over 10 yearsQQ2 only runs on half the machines in our office. Some of them are brand new Windows 8 tablets. We know the issues are due to the graphics cards not implementing all of the OpenGL stack that's needed by QQ2.
-
Mark Pieszak - Trilon.io almost 10 yearsThis should be the "correct" answer. This actually describes the differences between QML & QT Quick, and the billions of variations / plugins. Nice work!
-
Adversus about 9 yearsThe dependency on OpenGL has gotten a lot better, see here for more information.
-
timday almost 9 yearsGood summary. Although be aware that moving away from QPainter/QGraphicsView -based QtQuick1 to OpenGL/QSG -based QtQuick2 isn't entirely without downside: e.g printer support rather depended on QPainter stackoverflow.com/q/20825233/24283
-
dev_nut almost 9 yearsThis answer doesn't differentiate between qml and quick.
-
Stephen Quan almost 9 years@dev_nut I've revised my answer based on your comment. In short, QML exists in both QtQuick 1.x and QtQuick 2.x so it didn't make sense for a comparison.
-
BaCaRoZzo almost 9 yearsI would say, do not remove the answer. As long as you have corrected any mistake, you don't know who is going to read it and for whichever need. Qt 4 is still around and in particular settings the usage of the declarative module could apply. That said, everyone agrees that Bootroo's answer should be the accepted one.
-
S.M.Mousavi over 6 yearsYou forget to describe QtQml module.
-
Sandburg almost 6 yearsIt could be nice to update the list. What to learn and what to forget if I'm droped into Qt 5.11? - To know: QtQuick2, QtQuickControls2, QtQuickExtra, QML2, .pro - To forget: QtQuick1, QtQuickControls1, Widgets, QML1 ; What is not finished? QBS, forget it yet!
-
Sandburg almost 6 yearsThere are too many features that came during the lifetime of Qt5.X... it is really necessary to purge it of old knowledges.
-
Vincent Fourmond about 4 yearsWhy the use of V8 disallow the use on mobile devices ?