QML Runtime 도구를 사용한 프로토타이핑
qml 유틸리티는 주로 QML 애플리케이션과 컴포넌트를 테스트하기 위한 것입니다. 실제 운영 환경에서 QML 애플리케이션을 실행하려면 대개 사용자 정의 C++ 애플리케이션을 개발하거나 QML 파일을 모듈에 묶어야 합니다. 자세한 내용은 QML 애플리케이션 배포를 참조하십시오.
qml 는 표시할 내용이 없더라도 사용자가 제공하는 모든 QML 유형을 있는 그대로 인스턴스화할 수 있습니다. Window 이외의 루트 객체를 사용하여 QML 콘텐츠를 표시하려면, qml 가 이 콘텐츠를 Window 로 감싸줍니다.
따라서 qml 로 개발된 프로토타입을 C++ 애플리케이션으로 전환할 때는 루트 요소가 Window 인지 확인하거나, 루트 Item 를 담을 QQuickView 를 C++에서 생성해야 합니다. 하지만 그 동안에는 qml 도구를 사용하여 프로토타입의 일부를 별도로 불러와 테스트할 수 있습니다.
.qml 파일을 로드하려면 명령 프롬프트에서 파일 경로를 지정하십시오:
$ qml myqmlfile.qml구성 옵션을 확인하려면 --help 인수를 지정하여 qml 을 실행하십시오.
로드하려는 QML 파일의 루트 객체가 Window가 아닌 Item인 경우, 표시되려면 Window 로 감싸야 합니다. 이 작업이 진행 중인 동안, 이미 로드된 최상위 객체는 PartialScene 객체로 표현됩니다. qml 도구는 다음 단계를 결정하기 위해 추가 QML 파일을 로드합니다. 그중 하나는 PartialScene 를 어떤 종류의 컨테이너로 감쌀지 지정하는 구성 파일입니다. PartialScene.container 속성은 컨테이너 컴포넌트의 QML 소스 코드를 가리키는 URL을 제공하며, 이 소스 코드에는 일반적으로 먼저 로드된 Item 를 감싸기 위한 Window 가 선언되어 있어야 합니다. 따라서 Item을 Window로 감싸는 과정은 프로그래밍 방식으로 제어할 수 있으며, 기본적으로 이 두 개의 추가 QML 파일은 qml 실행 파일 내부의 리소스에서 로드됩니다. --list-conf 명령을 사용하여 사용 가능한 구성 목록을 확인할 수 있습니다:
$ qml --list-conf
Built-in configurations:
default
resizeToItemdefault 구성은 기본 동작을 제공합니다. 즉, 시작 시 및 사용자가 창 크기를 조정할 때 루트 Item의 크기가 래퍼 Window를 채우도록 조정됩니다. 대안인 resizeToItem 구성은 반대로 작동합니다. 즉, Item이 프로그래밍 방식으로 자체 크기를 설정할 수 있으며(예를 들어, 자체 width 및 height 속성에 바인딩을 생성하는 방식), 래퍼 Window는 Item이 들어갈 수 있도록 크기가 조정됩니다(단, 창 시스템에서 부과할 수 있는 제한 사항은 적용됩니다). -c 또는 --config 옵션을 사용하여 이 중 하나를 선택할 수 있습니다:
$ qml -c resizeToItem selfResizingItem.qmlQStandardPaths::AppConfigLocation 에 구성 디렉터리를 생성하여 추가 구성을 추가할 수 있으며, 각 디렉터리에는 configuration.qml 라는 이름의 구성 파일과 Item 래퍼를 선언하는 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.qmlqml 런타임은 해당 이름을 가져야 하는 containedObject 속성을 직접 설정하며, 이 속성이 설정되면 Item 는 Window 로 부모 객체가 재설정되어 표시됩니다. 이 Window는 QML에서 선언되므로, 사용자 정의 래퍼 윈도우를 작성할 때 원하는 추가 기능을 자유롭게 추가할 수 있습니다. 예를 들어, 크기 조정을 사용자 정의 방식으로 처리하거나, 프로토타이핑 과정에서 유용할 수 있는 기능을 추가하는 것이 가능합니다.
AppConfigLocation 에서 검색된 결과와 관계없이, configuration.qml 파일의 전체 경로를 지정하는 qml -c 옵션을 대신 사용할 수 있으며, 이 파일은 다시 컨테이너 객체의 전체 경로를 지정할 수 있으므로, 이러한 파일들은 어디에나 위치할 수 있습니다.
구성 파일에서 선언할 수 있는 기능 외에도, qml 도구는 명령줄 옵션을 통해 몇 가지 추가 기능을 제공합니다. 최신 목록을 확인하려면 --help 옵션을 사용하십시오.
© 2026 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.