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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 | 운영자 | 2019.01.05 | 86827 |
8 | z-order 를 컨트롤 하기위한 방법 | makersweb | 2015.05.13 | 6649 |
7 | QML내에서의 시그널, 슬롯 시스템 | makersweb | 2019.09.29 | 7111 |
6 |
Qml 기본 컴포넌트 강좌 (2)
[2] ![]() | makersweb | 2019.01.05 | 8744 |
5 |
QML 강좌 - 동적 Listing (ListView)
![]() | makersweb | 2019.06.01 | 10250 |
4 |
Qml 기본 컴포넌트 강좌 (1)
![]() | makersweb | 2019.01.03 | 12253 |
» | QML과 QtQuick 모듈 개념과 기본 타입들 | makersweb | 2019.04.26 | 13535 |
2 |
Qml과 C++로 구현하는 GUI어플리케이션
![]() | makersweb | 2018.12.25 | 14197 |
1 |
QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2)
[1] ![]() | makersweb | 2019.05.26 | 15166 |