QML 객체 유형
QML 객체 유형은 QML 객체를 인스턴스화할 수 있는 유형입니다.
구문론적으로 보면, QML 객체 유형은 유형 이름 뒤에 해당 객체의 속성을 포함하는 중괄호 집합을 지정하여 객체를 선언하는 데 사용할 수 있는 유형입니다. 이는 같은 방식으로 사용할 수 없는 값 유형과는 다릅니다. 예를 들어 Rectangle 는 QML 객체 유형으로 Rectangle
유형 객체를 만드는 데 사용할 수 있습니다. 개체가 아닌 단순한 데이터 유형을 저장하는 데 사용되는 int
및 bool
과 같은 기본 유형으로는 이 작업을 수행할 수 없습니다.
사용자 지정 QML 객체 유형은 문서에서 QML 객체 유형 정의에 설명된 대로 유형을 정의하는 .qml 파일을 만들거나 C++에서 QML 유형 정의에 설명된 대로 C++에서 QML 유형을 정의하고 QML 엔진에 유형을 등록하여 정의할 수 있습니다. 두 경우 모두 QML 파일에서 QML 객체 유형으로 선언하려면 유형 이름이 대문자로 시작해야 한다는 점에 유의하세요.
C++ 및 다양한 QML 통합 방법에 대한 자세한 내용은 C++ 및 QML 통합 개요 페이지를 참조하세요.
QML에서 객체 유형 정의하기
QML 문서를 통해 객체 유형 정의하기
플러그인 작성자와 애플리케이션 개발자는 QML 문서로 정의된 유형을 제공할 수 있습니다. QML 문서가 QML 가져오기 시스템에 표시되면 파일 이름에서 파일 확장자를 뺀 이름으로 식별되는 유형을 정의합니다.
따라서 "MyButton.qml"이라는 이름의 QML 문서가 존재하는 경우, 이 문서는 QML 애플리케이션에서 사용할 수 있는 "MyButton" 유형의 정의를 제공합니다.
QML 문서를 정의하는 방법과 QML 언어의 구문에 대한 자세한 내용은 QML 문서에 대한 문서를 참조하세요. QML 언어와 QML 문서를 정의하는 방법에 익숙해졌다면 QML 문서에서 재사용 가능한 자체 QML 유형을 정의하고 사용하는 방법을 설명하는 문서를 참조하세요.
자세한 내용은 QML 문서를 통해 객체 유형 정의하기를 참조하세요.
컴포넌트로 익명 유형 정의하기
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 은 동일한 문서에서 Item 객체에 대해 선언된 root
과 충돌하지 않고 root
의 ID를 가질 수 있는데, 이 두 ID 값은 서로 다른 컴포넌트 범위 내에서 선언된 것이기 때문입니다.
자세한 내용은 범위 및 이름 지정 해결을 참조하세요.
C++에서 객체 유형 정의하기
C++ 플러그인 작성자와 애플리케이션 개발자는 Qt Qml 모듈에서 제공하는 API를 통해 C++로 정의된 유형을 등록할 수 있습니다. 각기 다른 사용 사례를 충족할 수 있는 다양한 등록 함수가 있습니다. 이러한 등록 함수에 대한 자세한 내용과 사용자 정의 C++ 유형을 QML에 노출하는 구체적인 내용은 C++에서 QML 유형 정의하기 문서를 참조하세요.
QML 유형 시스템은 임포트, 플러그인 및 확장이 알려진 임포트 경로에 설치되는 것에 의존합니다. 플러그인은 타사 개발자가 제공하고 클라이언트 애플리케이션 개발자가 재사용할 수 있습니다. QML 확장 모듈을 만들고 배포하는 방법에 대한 자세한 내용은 QML 모듈에 대한 문서를 참조하세요.
© 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.