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