이 페이지에서

플러그인과 함께 QML 모듈 사용

QML 모듈 은 C++ 플러그인을 사용하여 C++로 정의된 컴포넌트를 Qt Quick 애플리케이션에 노출할 수 있습니다.

QML 모듈을 만들려면 다음과 같이 하세요:

  1. 사용자 지정 컴포넌트를 만들고 모든 .qml 파일을 모듈 전용 디렉터리에 배치합니다. 예를 들어 imports\asset_imports.
  2. Qt Quick UI 프로토타입 프로젝트(.qmlproject)의 경우 모듈을 사용하려는 애플리케이션의 .qmlproject 파일에 모듈이 있는 디렉터리 경로를 importPaths 변수의 값으로 지정합니다. 예를 들어 importPaths: [ "imports", "asset_imports" ] 입니다.
  3. 모듈에 대한 qmldir 파일을 만들어 모듈 디렉터리에 배치합니다. 자세한 내용은 모듈 정의 qmldir 파일을 참조하세요.
  4. 모듈 디렉터리에 designer 디렉터리를 만듭니다.
  5. 모듈에 대한 .metainfo 파일을 만들어 designer 디렉터리에 넣습니다. 예를 들어 qtquickcontrols2.metainfo 과 같이 Qt와 함께 제공되는 메타정보 파일을 사용합니다.
  6. QML 모듈 임포트하기의 지침에 따라 모듈을 프로젝트로 임포트합니다.

참고: Qt Creator 에서 새 QML 모듈을 찾을 수 없는 경우, 프로젝트를 빌드한 다음 Tools > QML/JS > Reset Code Model 으로 이동하여 코드 모델을 재설정하세요.

Qt 6.1 이하로 개발하기

Qt 6.2부터 CMake는 qmltypesqmldir 파일을 자동으로 생성합니다.

타입 설명 파일 생성하기

QML 유형을 등록할 때 QML 모듈에 plugins.qmltypes 파일이 있는지 확인하세요. 이 파일은 qmldir 파일과 같은 디렉터리에 위치하는 것이 이상적입니다. qmltypes 파일에는 모듈의 플러그인이 내보낸 구성 요소에 대한 설명이 있으며 모듈을 가져올 때 Qt Creator 에서 로드됩니다.

자세한 내용은 유형 설명 파일을 참조하세요.

플러그인 자동 덤프

플러그인이 있는 모듈에 qmltypes 파일이 없는 경우 Qt Creator 백그라운드에서 qmldump 프로그램을 실행하여 임시 파일을 직접 생성하려고 시도합니다. 그러나 이 자동 덤핑은 실패 지점이 많은 대체 메커니즘이므로 안심하고 사용할 수 없습니다.

QML 모듈 가져오기

기본적으로 Qt Creator 은 Qt의 QML 가져오기 경로에서 QML 모듈을 찾습니다.

qmake를 사용하고 응용 프로그램에서 Qt Creator 이 사용해야 하는 추가 임포트 경로를 추가하는 경우 응용 프로그램의 .pro 파일에 QML_IMPORT_PATH 을 사용하여 지정하십시오: QML_IMPORT_PATH += path/to/module.

CMake를 사용하는 경우 CMakeLists.txt 파일에 다음 명령을 추가하여 QML 가져오기 경로를 설정합니다:

set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "" FORCE)

가져오기 경로는 CMake 프로젝트에서 빌드한 모든 대상에 영향을 줍니다.

코드 모델 재설정을참조하세요 .

Copyright © The Qt Company Ltd. and other contributors. 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.