QML 문서
QML 문서는 QML 문서 구문을 따르는 문자열입니다. 문서는 QML 객체 유형을 정의합니다. 문서는 일반적으로 로컬 또는 원격에 저장된 ".qml" 파일에서 불러오지만, 코드에서 수동으로 생성할 수도 있습니다. 문서에 정의된 객체 유형의 인스턴스는 QML 코드에서 ` Component `을 사용하거나, C++에서 ` QQmlComponent `을 사용하여 생성할 수 있습니다. 또는, 객체 유형이 특정 유형 이름으로 QML 유형 시스템에 명시적으로 노출된 경우, 다른 문서의 객체 선언에서 해당 유형을 직접 사용할 수 있습니다.
문서 내에서 재사용 가능한 QML 객체 유형을 정의할 수 있는 기능은 클라이언트가 모듈식이며 가독성과 유지보수성이 뛰어난 코드를 작성할 수 있도록 하는 중요한 기반이 됩니다.
Qt 5.4부터는 문서의 파일 확장자로 ".ui.qml" 을 사용할 수도 있습니다. QML 엔진은 이러한 파일을 표준 .qml 파일과 동일하게 처리하며, 확장자의 .ui 부분은 무시합니다. Qt Design Studio 는 이러한 파일을 UI 파일로 처리합니다. 이 파일들은 QML 언어 기능의 일부만 포함할 수 있습니다.
QML 문서의 구조
QML 문서는 임포트 섹션과 객체 선언 섹션, 두 부분으로 구성됩니다. 문서의 임포트 섹션에는 해당 문서가 사용할 수 있는 QML 객체 유형과 JavaScript 리소스를 정의하는 임포트 문이 포함됩니다. 객체 선언 섹션은 문서에 정의된 객체 유형을 인스턴스화할 때 생성될 객체 트리를 정의합니다.
간단한 문서의 예는 다음과 같습니다:
import QtQuick 2.0
Rectangle {
width: 300
height: 200
color: "blue"
}이 주제에 대한 자세한 내용은 ‘QML 문서의 구조’를 참조하십시오.
QML 언어의 구문
문서의 객체 선언 섹션은 적절한 QML 구문을 사용하여 유효한 객체 계층 구조를 명시해야 합니다. 객체 선언에는 사용자 정의 객체 속성에 대한 사양이 포함될 수 있습니다. 객체 메서드 속성은 JavaScript 함수로 지정할 수 있으며, 객체 속성 속성에는 속성 바인딩 표현식을 할당할 수 있습니다.
유효한 구문에 대한 자세한 내용은 QML 구문 관련 문서를 참조하고, 해당 주제에 대한 심층적인 정보는 QML과 JavaScript 통합 관련 문서를 참조하십시오.
QML 문서를 통한 객체 유형 정의
이전 섹션에서 간략히 설명한 바와 같이, 문서는 암묵적으로 QML 객체 유형을 정의합니다. QML의 핵심 원칙 중 하나는 객체 유형을 정의한 후 재사용할 수 있다는 점입니다. 이는 QML 코드의 유지 관리성을 향상시키고, 객체 계층 구조 선언의 가독성을 높이며, UI 정의와 논리 구현 간의 분리를 촉진합니다.
다음 예제에서 클라이언트 개발자는 파일 내의 문서를 통해 ` Button ` 유형을 정의합니다:
// Button.qml
import QtQuick
Rectangle {
width: 100; height: 100
color: "red"
MouseArea {
anchors.fill: parent
onClicked: console.log("Button clicked!")
}
}그런 다음 애플리케이션에서 ` Button ` 유형을 사용할 수 있습니다:
|
이 주제에 대한 자세한 내용은 문서에서 객체 유형 정의에 관한 문서를 참조하십시오.
리소스 로딩 및 네트워크 투명성
QML은 네트워크 투명성을 지원한다는 점을 유의해야 합니다. 애플리케이션은 로컬 경로의 문서만큼이나 간편하게 원격 경로의 문서를 가져올 수 있습니다. 실제로, 모든 url 속성에는 원격 또는 로컬 URL을 할당할 수 있으며, QML 엔진이 관련된 모든 네트워크 통신을 처리합니다.
임포트 시 네트워크 투명성에 대한 자세한 내용은 네트워크 투명성 문서를 참조하십시오.
범위 및 이름 해결
문서 내의 표현식은 대개 객체나 객체의 속성을 포함하며, 여러 객체가 정의될 수 있고 서로 다른 객체가 동일한 이름의 속성을 가질 수 있으므로, QML에서는 미리 정의된 기호 해결 규칙을 마련해야 합니다. 이 주제에 대한 자세한 내용은 범위 및 기호 해결 페이지를 참조하십시오.
© 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.
