QML 모듈
QML 모듈은 모듈을 임포트하는 클라이언트에서 사용할 수 있는 타입 네임스페이스에서 버전이 지정된 타입과 자바스크립트 리소스를 제공합니다. 모듈이 제공하는 유형은 플러그인 내에서 C++로 정의하거나 QML 문서에서 정의할 수 있습니다. 모듈은 모듈을 독립적으로 업데이트할 수 있는 QML 버전 관리 시스템을 사용합니다.
QML 모듈을 정의할 수 있습니다:
- 프로젝트 내에서 공통 QML 유형 공유(예: 여러 창에서 사용되는 UI 컴포넌트 그룹)
- QML 기반 라이브러리 배포
- 개별 기능을 모듈화하여 애플리케이션이 개별 요구 사항에 필요한 라이브러리만 로드할 수 있습니다.
- 클라이언트 코드를 손상시키지 않고 모듈을 안전하게 업데이트할 수 있도록 유형 및 리소스 버전 관리
최신 QML 모듈
QML 모듈은 CMake API, 특히 qt_add_qml_module을 사용하여 정의하는 것이 가장 좋습니다. 다음 섹션에서는 최신 QML 모듈 생성의 모든 측면을 설명합니다.
QML 문서를 통해 객체 유형 정의하기
재사용 가능한 컴포넌트를 만드는 가장 간단한 방법인QML 문서에서 직접 QML 유형을 정의할 수 있습니다. 대문자로 시작하는 각 QML 파일은 동일한 모듈의 다른 QML 파일에서 사용할 수 있는 유형을 자동으로 정의합니다.
C++에서 QML 유형 정의하기
더 나은 성능 또는 하위 수준 API에 대한 액세스를 위해 C++에서 유형을 정의하고 QML에 노출할 수 있습니다. C++ 타입은 프로퍼티, 메서드, 시그널을 완벽하게 제어하는 동시에 정적 타입 지정 및 컴파일의 이점을 제공합니다.
CMake로 모든 것을 하나로 묶기
qt_add_qml_module CMake 명령은 QML 파일, C++ 유형 및 리소스를 하나의 응집력 있는 모듈로 통합합니다. 유형 등록, 리소스 컴파일 및 QML 도구 통합을 자동으로 처리하므로 최신 QML 모듈 개발에 권장되는 접근 방식입니다.
QML 모듈 현대화
이 가이드는 구형 CMake 기반 QML 모듈을 최신 버전의 Qt로 마이그레이션하는 데 도움이 됩니다. 최신 CMake 정책에 적응하고 오래된 기술을 피하는 방법을 다룹니다.
QML 모듈 미세 조정하기
QML 모듈 작성의 고급 모듈 구성 옵션을 사용하면 모듈 동작을 세밀하게 제어할 수 있습니다. 여기에는 동일한 바이너리에 여러 QML 모듈 추가, 버전 관리, 사용자 지정 디렉터리 레이아웃 및 QML 플러그인의 고급 주제가 포함됩니다.
이전 QML 모듈
참고: CMake API를 사용하여 QML 모듈을 정의하세요. qmake 을 사용해야 하는 경우에만 QML 모듈을 수동으로 정의하세요.
모듈은 모듈 정의 qmldir 파일로 정의됩니다. 각 모듈에는 모듈의 식별자인 연관된 유형 네임스페이스가 있습니다. 모듈은 QML 문서 또는 C++ 플러그인을 통해 정의된 QML 객체 유형과 JavaScript 리소스를 제공할 수 있으며, 클라이언트에서 가져올 수 있습니다.
모듈을 정의하려면 개발자는 모듈에 속하는 다양한 QML 문서, JavaScript 리소스 및 C++ 플러그인을 하나의 디렉터리에 모으고 적절한 모듈 정의 qmldir 파일을 작성하여 해당 디렉터리에 넣어야 합니다. 그런 다음 이 디렉터리를 QML 가져오기 경로에 모듈로 설치할 수 있습니다.
모듈 정의가 프로젝트 내에서 일반적인 QML 유형을 공유하는 유일한 방법은 아니며, 간단한 QML 문서 디렉토리 가져오기도 이러한 목적으로 사용될 수 있습니다.
지원되는 QML 모듈 유형
QML에서 지원하는 모듈에는 두 가지 유형이 있습니다:
식별된 모듈은 식별자를 명시적으로 정의하고 QML 가져오기 경로에 설치됩니다. 식별된 모듈은 유형 버전 관리로 인해 유지 관리가 더 쉬우며 레거시 모듈에는 제공되지 않는 QML 엔진의 유형 등록 보장이 제공됩니다. 레거시 모듈은 레거시 코드가 최신 버전의 QML에서 계속 작동할 수 있도록 하기 위해서만 지원되며, 클라이언트에서는 가급적 사용하지 않는 것이 좋습니다.
클라이언트는 QML 문서 또는 JavaScript 파일 내에서 QML 모듈을 가져올 수 있습니다. 이 주제에 대한 자세한 내용은 QML 모듈 가져오기에 대한 문서를 참조하세요.
C++ 플러그인에서 유형 및 기능 제공하기
C++로 구현된 로직이 많거나 C++로 유형을 정의하고 이를 QML에 노출하는 애플리케이션은 QML 플러그인을 구현하고 싶을 수 있습니다. QML 확장 모듈 개발자는 더 나은 성능을 달성하거나 유연성을 높이기 위해 일부 유형을 QML 문서를 통해 정의하는 대신 C++ 플러그인에서 구현하고자 할 수 있습니다.
모든 QML용 C++ 플러그인에는 플러그인을 로드할 때 QML 엔진이 호출하는 초기화 함수가 있습니다. 이 초기화 함수는 플러그인이 제공하는 모든 유형을 등록해야 하지만 다른 작업을 수행해서는 안 됩니다(예: QObject 인스턴스화는 허용되지 않음).
자세한 내용은 QML용 C++ 플러그인 만들기를 참조하세요.
QML 모듈 현대화하기 및 QML 모듈을 CMake로 포팅하기도참조하세요 .
© 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.