QML

QML(QT 모델링 언어, Qt Modeling Language)은 사용자 인터페이스 마크업 언어이다. 사용자 인터페이스 중심 애플리케이션을 디자인하기 위한 선언형 언어(CSS와 JSON과 유사)이다. 인라인 자바스크립트 코드는 명령형 관점을 관리한다. Qt 프레임워크로 노키아가 개발한 UI 생성 키트인 Qt 퀵과 연동된다. Qt 퀵은 터치 입력, 부드러운 애니메이션, 사용자 경험이 중요한 모바일 애플리케이션에 사용된다. QML은 3D 씬과 프레임 그래프 렌더링 방법론을 기술하기 위해 Qt3D에도 사용된다. QML 문서는 계층형 오브젝트 트리를 기술한다. Qt에 포함된 QML 모듈은 명령형 그래픽 빌딩 블록(예: Rectangle, Image), 모델링 컴포넌트(예: FolderListModel, XmlListModel), 행위 컴포넌트(예: TapHandler, DragHandler, State, Transition, Animation), 더 복잡한 컨트롤(예: Button, Slider, Drawer, Menu)을 포함한다. 이 요소들은 단순 버튼, 슬라이더에서부터 완전한 인터넷 지원 프로그램에 이르는 여러 복잡도의 컴포넌트를 빌드할 수 있도록 결합이 가능하다.

QML 요소들은 인라인으로, 또는 .js 파일 포함을 통해 표준 자바스크립트를 사용하여 증강시킬 수 있다. 또, 요소들은 Qt 프레임워크를 사용하여 심리스하게 C++ 컴포넌트와 통합, 확장이 가능하다.

QML은 언어이다. QML의 자바스크립트 런타임은 커스텀 V4 엔진(Qt 5.2 이후)이며 Qt 퀵은 2D 씬 그래프 및 기반 UI 프레임워크이다. 이것들은 Qt Declarative 모듈의 일부이지만 이 기술은 더 이상 Qt Declarative로 불리지 않는다.

QML과 자바스크립트 코드는 Qt 퀵 컴파일러를 통해 네이티브 C++ 바이너리로 컴파일이 가능하다. 대안으로, QML 캐시 파일 포맷이 있으며 다음 실행 시 더 빠른 시작을 위해 컴파일된 QML 버전을 동적으로 저장한다.

문법, 시맨틱스

기본 문법 
예:

 import QtQuick 2.9  // import from Qt 5.9

 Rectangle {
     id: canvas
     width: 250
     height: 200
     color: "blue"

     Image {
         id: logo
         source: "pics/logo.png"
         anchors.centerIn: parent
         x: canvas.height / 5
     }
 }

각주

외부 링크 
 QML Reference Documentation
 First steps with QML
 QML Examples and Tutorials
 Qt Blog
 QML Tutorial
 Qt Developer Guides
 Exporting QML from Photoshop and GIMP
 Application complete invoicing system in QML - Khitomer
 QML Creator
 QML Book

How-tos 
 Integrating QML and C++
 Important C++ Classes Provided By The Qt QML Module

선언형 프로그래밍 언어
Qt