Qt Quick

Qt Quick, also called QML for its GUI specification language, was designed to be touch friendly and to take advantage of mobile and embedded, hardware accelerated graphics.

The QML language, an acronym for Qt Meta Language, has a JSON-ish syntax, which is used for description of GUI's hierarchical setup, and also lets us add behavior by writing JavaScript code. Look at the following example:

Window {
visible: true
width: 640
height: 480
id: root

Text {
id: textItem
text: "Hello QML!"
}

Button {
text: "click me!"
anchors.top: textItem.bottom
onClicked: textItem.text = "clicked..."
}
}

You see we do not program, do not create widgets, do not wire them together, but only describe how the UI has to look. We can position the widgets relatively one to another using the anchors property and to add behavior with JavaScript code for predefined events, for example onClicked.

As we already mentioned, in Qt 5 the Qt Quick module was first designed to run exclusively on OpenGL ES 2.0 hardware. Later, the support for software rendering and OpenVG (a standard vector graphics API) was (re)introduced so that QML could be used on a low-end embedded hardware as well. Additionally, in Qt 5.12, experimental support for Direct3D 12 was added; however, there is still no support for newer graphics APIs such as Vulkan or Metal. Given that Apple recently deprecated QpenGL support for some configurations, clearly something has to be done in future QML versions!