Qt QML은 Qt Quick 기반 사용자 인터페이스를 만드는 데 사용되는 언어인 QML을 실행하는 엔진이다. V8 Javascript 엔진을 (5.11부터 엔진의 새로운 이름은 Qt QML)사용하고 QML 언어 및 ECMAScript 5.1과 호환되며 JavaScript 환경에서 제공하는 전역객체, 조건 연산자, 배열, 변수 설정 및 루프와 같은 표준 구문을 실행할 수 있다.
Qt QML 모듈은 QML 언어로 응용 프로그램 및 라이브러리를 개발하기위한 기본적인 프레임 워크 (그래픽에 의존하지 않는 QML엔진 및 JavaScript 리소스)를 제공하고, Qt Quick 모듈은 QML을 사용하여 사용자 인터페이스를 만드는 데 필요한 모든 기본 유형을 제공한다. 시각적 구성 요소(아이템) 만들기 및 애니메이션, 사용자 입력 수신, 데이터 모델 및 뷰 등을 포함한다. QtQuick 모듈은 QML 응용 프로그램을 작성하기위한 표준 라이브러리인것이다.
Qt QML모듈은 응용 프로그램에 사용되는 QML 프레임 워크와 중요한 QML 타입을 포함하므로 필수로 포함되어야 한다. Qt QML의 사용방법은 QtQml을 import를 통해 사용할 수 있다.
import QtQml 2.12
다음 행도 qmake .pro 파일에 추가한다.
QT += qml
그러면 아래와 같은 QML 언어로 제공되는 기본 타입들을 사용할 수 있다.
| bool | Binary true/false value | 
| double | 배정밀도 실수형 숫자 | 
| enumeration | 열거형 | 
| int | 정수형 숫자, e.g. 0, 10, or -20 | 
| list | QML objects의 리스트 | 
| real | 실수형 숫자 | 
| string | 문자열 | 
| url | 리소스 위치 | 
| var | 일반적인 프로퍼티 타입 | 
그밖에 모듈에는 QML 기본 유형 외에 다음과 같은 QML들이 있다.
Component
QtObject
Binding
Connections
Timer
다음은 QML모듈의 사용 예를 보여준다.
MyItem.qml
import QtQml 2.12
QtObject{
    // Qt.platform을 이용하면 현재 운영체제도 알 수있다.
    property string platform: Qt.platform.os
    // Qt 5.10 부터 QML에서 enum을 선언하는 것이 가능하다.
    enum MyEnum {
        First = 10,
        Second
    }
}
MyComponent.qml
import QtQml 2.12
Component{
    id: mycomponent
    Timer{
        id: timer
        running: true
        interval: 2000
        onTriggered: {
            console.log("quit!!") // console 객체를 사용.
            Qt.quit() // Qt전역 객체 사용하여 응용프로그램을 2초후에 종료시킴.
        }
    }
}
main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    MyItem{
        id: myitem
    }
    Loader{
        id: loader
    }
    MyComponent{
        id: myComponent
    }
    Text {
        id: name
        text: myitem.platform
        font.pixelSize: 20
        anchors.centerIn: parent
        MouseArea{
            anchors.fill: parent
            onClicked:{
                console.log("clicked!! ", MyItem.MyEnum.First)
                loader.sourceComponent = myComponent
            }
        }
    }
}
이렇게 QML모듈은 아주 기본적인 유형을 제공하고있다.
일반적인 경우 QtQuick이 QML모듈을 포함하고 있기때문에 QtQuick을 import해줘도 무관하다.
import QtQuick 2.12







