QML 모듈
QML 모듈은 모듈을 가져오는 클라이언트에서 사용할 수 있는 타입 네임스페이스에서 버전이 지정된 타입과 자바스크립트 리소스를 제공합니다. 모듈이 제공하는 유형은 플러그인 내 C++ 또는 QML 문서에서 정의할 수 있습니다. 모듈은 모듈을 독립적으로 업데이트할 수 있는 QML 버전 관리 시스템을 사용합니다.
QML 모듈을 정의할 수 있습니다:
- 프로젝트 내에서 공통 QML 유형 공유(예: 여러 창에서 사용되는 UI 컴포넌트 그룹)
- QML 기반 라이브러리 배포
- 개별 기능을 모듈화하여 애플리케이션이 개별 요구 사항에 필요한 라이브러리만 로드할 수 있습니다.
- 클라이언트 코드를 손상시키지 않고 모듈을 안전하게 업데이트할 수 있도록 유형 및 리소스 버전 관리
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++ 플러그인 만들기를 참조하세요.
© 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.