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

QML
패러다임프로그래밍 패러다임: 선언형, 반응형, 스크립트
개발자Qt 프로젝트
발표일2009년(15년 전)(2009)
최근 버전5.12.1[1]
최근 버전 출시일2019년 2월 1일(5년 전)(2019-02-01)
자료형 체계dynamic, strong
웹사이트qt-project.org/doc/qt-5/qmlapplications.html
영향을 받은 언어
XAML,[2] JSON, 자바스크립트, Qt
영향을 준 언어
Qt, 링(Ring)[3]
QML
파일 확장자.qml
인터넷 미디어 타입text/x-qml
개발Qt 프로젝트
포맷 종류스크립트 언어
웹사이트qt-project.org/doc/qt-5/qmlapplications.html

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

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

QML과 자바스크립트 코드는 Qt 퀵 컴파일러를 통해 네이티브 C++ 바이너리로 컴파일이 가능하다.[9] 대안으로, QML 캐시 파일 포맷이 있으며[10] 다음 실행 시 더 빠른 시작을 위해 컴파일된 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
     }
 }

각주 편집

  1. “Qt 5.12.1 Released”. 
  2. “Which interface for a modern application?”. 《scriptol》. 
  3. Ring Team (2017년 12월 5일). “The Ring programming language and other languages”. 《ring-lang.net》. ring-lang. 
  4. “Qt Declarative API Changes | Qt Blog”. 2014년 3월 25일. 2014년 3월 25일에 원본 문서에서 보존된 문서. 
  5. “Qt 3D Overview | Qt 3D 5.13.1”. 《doc.qt.io》. 
  6. “All QML Types | Qt 5.13”. 《doc.qt.io》. 2019년 9월 7일에 확인함. 
  7. Knoll, Lars (2013년 4월 15일). “Evolution of the QML engine, part 1”. 2018년 5월 11일에 확인함. 
  8. “What's New in Qt 5.2”. 2018년 5월 11일에 확인함. 
  9. “Qt Quick Compiler”. 2019년 9월 7일에 확인함. 
  10. “Deploying QML Applications | Qt 5.13”. 《doc.qt.io》. 2019년 9월 7일에 확인함. 

외부 링크 편집

How-tos 편집