QML 객체 유형
QML 객체 유형은 QML 객체를 인스턴스화할 수 있는 유형입니다.
구문적 측면에서, QML 객체 유형은 유형 이름 뒤에 해당 객체의 속성을 포함하는 중괄호 세트를 지정하여 객체를 선언하는 데 사용할 수 있는 유형입니다. 이는 같은 방식으로 사용할 수 없는 값 유형과는 다릅니다. 예를 들어, ` Rectangle `는 QML 객체 유형으로, ` Rectangle ` 유형의 객체를 생성하는 데 사용할 수 있습니다. 이는 ` int ` 및 ` bool`와 같은 기본 유형으로는 수행할 수 없는데, 이러한 유형은 객체가 아닌 간단한 데이터 유형을 저장하는 데 사용되기 때문입니다.
사용자 정의 QML 객체 유형은 ‘문서로서의 QML 객체 유형 정의’에서 설명한 대로 해당 유형을 정의하는 .qml 파일을 생성하거나, ‘C++에서 QML 유형 정의’에서 설명한 대로 C++에서 QML 유형을 정의하고 QML 엔진에 해당 유형을 등록함으로써 정의할 수 있습니다. 두 경우 모두, QML 파일에서 QML 객체 유형으로 선언되려면 유형 이름은 대문자로 시작해야 합니다.
C++ 및 다양한 QML 통합 방법에 대한 자세한 내용은 C++ 및 QML 통합 개요 페이지를 참조하십시오.
다른 모듈을 가져오지 않고도 사용할 수 있는 두 가지 내장 객체 유형이 있습니다. ` QtObject `는 모든 객체 유형의 기본 유형입니다. ` Component `는 QML 문서 내에서 인라인으로 새로운 객체 유형을 정의하는 데 사용할 수 있습니다.
QML을 통해 객체 유형 정의하기
QML 문서를 통한 객체 유형 정의
플러그인 작성자와 애플리케이션 개발자는 QML 문서로 정의된 유형을 제공할 수 있습니다. QML 가져오기 시스템에서 인식할 수 있는 QML 문서는 파일 확장자를 제외한 파일 이름으로 식별되는 유형을 정의합니다.
따라서 "MyButton.qml"이라는 이름의 QML 문서가 존재하면, 이 문서는 QML 애플리케이션에서 사용할 수 있는 "MyButton" 유형의 정의를 제공합니다.
QML 문서를 정의하는 방법 및 QML 언어의 구문에 대한 정보는 QML 문서 관련 문서를 참조하십시오. QML 언어와 QML 문서 정의 방법에 익숙해지면, QML 문서에서 재사용 가능한 사용자 정의 QML 유형을 정의하고 사용하는 방법을 설명하는 문서를 참조하십시오.
자세한 내용은 ‘QML 문서를 통한 객체 유형 정의’를 참조하십시오.
Component를 사용한 익명 유형 정의
QML 내에서 객체 유형을 생성하는 또 다른 방법은 ` Component ` 유형을 사용하는 것입니다. 이를 통해 ` .qml ` 파일에 별도의 문서를 사용하는 대신, QML 문서 내에서 인라인으로 유형을 정의할 수 있습니다.
Item {
id: root
width: 500; height: 500
Component {
id: myComponent
Rectangle { width: 100; height: 100; color: "red" }
}
Component.onCompleted: {
myComponent.createObject(root)
myComponent.createObject(root, {"x": 200})
}
}여기서 ` myComponent ` 객체는 본질적으로 ` Component::createObject `을 사용하여 인스턴스화할 수 있는 익명 유형을 정의하며, 이를 통해 해당 익명 유형의 객체를 생성할 수 있습니다.
인라인 컴포넌트는 일반 최상위 컴포넌트의 모든 특성을 공유하며, 이를 포함하는 QML 문서와 동일한 import 목록을 사용합니다.
각 Component 객체 선언은 자체적인 컴포넌트 범위를 생성한다는 점에 유의하십시오. Component 객체 선언 내에서 사용되거나 참조되는 모든 id 값은 해당 범위 내에서 고유해야 하지만, 인라인 컴포넌트가 선언된 문서 내에서 고유할 필요는 없습니다. 따라서, myComponent 객체 선언에서 선언된 Rectangle 는 root 라는 id를 가질 수 있으며, 이는 동일한 문서 내의 Item 객체에 대해 선언된 root 와 충돌하지 않습니다. 이 두 id 값은 서로 다른 컴포넌트 범위 내에서 선언되었기 때문입니다.
자세한 내용은 ‘범위 및 이름 해결’을 참조하십시오.
C++에서 객체 유형 정의
C++ 플러그인 작성자와 애플리케이션 개발자는 Qt Qml 모듈에서 제공하는 API를 통해 C++로 정의된 유형을 등록할 수 있습니다. 다양한 등록 함수가 있으며, 각 함수는 서로 다른 사용 사례를 충족시킵니다. 이러한 등록 함수에 대한 자세한 정보와 사용자 정의 C++ 유형을 QML에 노출하는 구체적인 방법에 대해서는 ‘C++에서 QML 유형 정의’ 관련 문서를 참조하십시오.
QML 타입 시스템은 알려진 임포트 경로에 설치된 임포트, 플러그인 및 확장 모듈에 의존합니다. 플러그인은 타사 개발자가 제공하며 클라이언트 애플리케이션 개발자가 재사용할 수 있습니다. 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.