QML Runtime 도구로 프로토타이핑하기
Qt에는 QML 문서를 로드하고 표시하는 유틸리티인 qml
실행 파일이 포함되어 있습니다.
qml
유틸리티는 주로 QML 애플리케이션 및 컴포넌트를 테스트하기 위한 것입니다. 프로덕션 환경에서 QML 애플리케이션을 실행하려면 사용자 지정 C++ 애플리케이션을 개발하거나 모듈에 QML 파일을 번들로 묶어야 하는 경우가 많습니다. 자세한 내용은 QML 애플리케이션 배포하기를 참조하세요. 루트 요소로 Item 을 지정하면 qml
이 자동으로 창을 생성하여 장면을 표시합니다. 참고로 QQmlComponent::create()는 그렇게 하지 않습니다. 따라서 qml
으로 개발한 프로토타입을 C++ 애플리케이션으로 옮길 때는 루트 요소가 Window 인지 확인하거나 C++에서 QQuickView 를 생성하여 루트 Item 를 보유해야 합니다. 하지만 그 동안에는 qml
도구를 사용하여 프로토타입의 일부를 별도로 로드하고 테스트할 수 있습니다.
.qml 파일을 로드하려면 명령 프롬프트에 파일 경로를 입력합니다:
$ qml myqmlfile.qml
구성 옵션을 보려면 --help
인수를 사용하여 qml
을 실행하세요.
로드 중인 QML 파일의 루트 개체가 창이 아닌 항목인 경우에는 창으로 감싸서 표시해야 합니다. 이 작업이 보류되는 동안 이미 로드된 최상위 수준 개체는 PartialScene
개체로 표시됩니다. 그런 다음 qml
도구는 다음에 수행할 작업을 결정하기 위해 추가 QML 파일을 로드합니다. 하나는 PartialScene
을 어떤 종류의 컨테이너로 래핑할지 지정하는 구성 파일입니다. PartialScene.container
속성은 컨테이너 구성 요소의 QML 소스 코드를 가리키는 URL을 제공하며, 일반적으로 먼저 로드된 Item 을 래핑할 Window 을 선언해야 합니다. 따라서 항목을 창으로 래핑하는 프로세스는 프로그래밍할 수 있으며, 기본적으로 이 두 개의 추가 QML 파일은 qml 실행 파일 내부의 리소스에서 로드됩니다. --list-conf
명령으로 사용 가능한 구성을 나열할 수 있습니다:
$ qml --list-conf Built-in configurations: default resizeToItem
default
구성은 시작 시와 사용자가 창 크기를 조정할 때 루트 항목의 크기가 래퍼 창을 채우도록 조정되는 기본 동작을 제공합니다. resizeToItem
구성은 반대로 작동합니다. 항목이 프로그래밍 방식으로 자체 크기를 설정할 수 있으며(예: 자체 width
및 height
속성에 대한 바인딩 생성), 래퍼 창이 그에 맞게 크기가 조정됩니다(창 시스템에 의해 부과될 수 있는 제한에 따름). -c
또는 --config
옵션을 사용하여 이 중 하나를 선택할 수 있습니다:
$ qml -c resizeToItem selfResizingItem.qml
QStandardPaths::AppConfigLocation 에 구성 디렉터리를 만들어 추가 구성을 추가할 수 있으며, 각 디렉터리에는 configuration.qml
이라는 이름의 구성 파일과 임의의 이름을 가질 수 있는 항목 래퍼를 선언하는 QML 파일 두 개가 들어 있습니다. 이 작업을 완료한 경우 qml --list-conf
명령은 이러한 추가 구성을 나열하고 --verbose
옵션은 이러한 구성을 확장하여 해당 구성의 전체 경로와 검색된 추가 위치를 제공합니다:
$ qml --list-conf --verbose Built-in configurations: default resizeToItem Other configurations: /home/myuser/.config/QtProject/Qml Runtime/simplest Checked in: /home/myuser/.config/QtProject/Qml Runtime /etc/xdg/QtProject/Qml Runtime
다음은 configuration.qml
파일의 예입니다:
import QmlRuntime.Config Configuration { PartialScene { itemType: "QQuickItem" container: Qt.resolvedUrl("ItemWrapper.qml") } }
다음은 container
속성이 가리킬 수 있는 가장 간단한 ItemWrapper.qml
입니다:
import QtQuick Window { required property Item containedObject: null onContainedObjectChanged: { if (containedObject == undefined || containedObject == null) { visible = false; } else { containedObject.parent = contentItem; visible = true; } } }
이러한 파일이 생성되면 configuration.qml
파일이 포함된 디렉터리 이름을 지정하는 qml -c
옵션을 사용하여 컨테이너 객체의 경로를 지정할 수 있습니다:
$ qml -c simplest mycomponent.qml
qml
런타임은 해당 이름을 갖기 위해 필요한 containedObject
속성을 직접 설정하며, 설정이 완료되면 Item 이 Window 으로 부모를 변경하여 표시합니다. 이 창은 QML로 선언되므로 자체 래퍼 창을 작성할 때 원하는 기능을 자유롭게 추가할 수 있습니다. 사용자 지정 방식으로 크기 조정을 처리하거나 프로토타이핑 중에 유용할 수 있는 기능을 추가하는 등 원하는 기능을 추가할 수 있습니다.
AppConfigLocation
에서 찾은 것과 관계없이 qml -c
옵션을 사용하여 configuration.qml
파일의 전체 경로를 지정할 수 있으며, 이 옵션은 컨테이너 객체의 전체 경로를 지정할 수 있으므로 이러한 파일은 어디에서나 찾을 수 있습니다.
구성 파일에서 선언할 수 있는 기능 외에도 qml
도구는 명령줄 옵션을 통해 몇 가지 기능을 더 제공합니다. --help
옵션을 사용하면 최신 목록을 볼 수 있습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.