QQmlEngineExtensionPlugin Class
QQmlEngineExtensionPlugin 클래스는 사용자 정의 QML 확장 플러그인을 위한 추상적 기반을 제공합니다. 더 보기...
헤더: | #include <QQmlEngineExtensionPlugin> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
상속합니다: | QObject |
- 상속된 멤버를 포함한 모든 멤버 목록
- QQml엔진 익스텐션 플러그인은 플러그인 클래스의 일부입니다.
공용 함수
QQmlEngineExtensionPlugin(QObject *parent = nullptr) |
재구현된 공용 함수
virtual void | initializeEngine(QQmlEngine *engine, const char *uri) override |
매크로
(since 6.2) | Q_IMPORT_QML_PLUGIN(PluginName) |
상세 설명
QQmlEngineExtensionPlugin 는 QML 애플리케이션에 동적으로 로드할 수 있는 QML 확장을 생성할 수 있는 플러그인 인터페이스입니다. 이러한 확장을 통해 사용자 지정 QML 유형을 QML 엔진에서 사용할 수 있습니다.
QML 확장 플러그인을 작성하려면
- QQmlEngineExtensionPlugin 서브클래스를 생성하고 Q_PLUGIN_METADATA() 매크로를 사용하여 플러그인을 Qt 메타 객체 시스템에 등록합니다.
- QML_ELEMENT 및 QML_NAMED_ELEMENT() 매크로를 사용하여 QML 유형을 선언합니다.
- 빌드 파일을 구성합니다.
CMake:
qt_add_qml_module(<target> URI <my.import.name> VERSION 1.0 QML_FILES <app.qml> NO_RESOURCE_TARGET_PATH )
qmake:
CONFIG += qmltypes QML_IMPORT_NAME = <my.import.name> QML_IMPORT_MAJOR_VERSION = <version>
- qmake를 사용하는 경우 플러그인을 설명하는 qmldir 파일을 만듭니다. 기본적으로 CMake는 qmldir 파일을 자동으로 생성합니다.
QML 확장 플러그인은 애플리케이션 전용 플러그인 또는 라이브러리형 플러그인을 위한 것입니다. 라이브러리 플러그인은 엔진의 루트 컨텍스트를 조작하면 라이브러리 사용자 코드에서 충돌이나 기타 문제가 발생할 수 있으므로 유형 등록으로 제한해야 합니다.
참고: CMake qt_add_qml_module API를 사용하는 경우 플러그인이 자동으로 생성됩니다. 유형 등록을 처리합니다. 사용자 정의 이미지 공급자 등록과 같은 특별한 요구 사항이 있는 경우에만 사용자 정의 플러그인을 작성하면 됩니다. 이 경우 기본 플러그인 생성을 비활성화하려면 qt_add_qml_module
호출에 NO_GENERATE_PLUGIN_SOURCE를 전달하세요.
링커가 최적화를 위해 생성된 유형 등록 기능을 실수로 제거할 수 있습니다. 코드 어딘가에 함수에 대한 합성 휘발성 포인터를 선언하여 이를 방지할 수 있습니다. 모듈 이름이 "my.module"인 경우 전역 범위에서 정방향 선언을 추가합니다:
void qml_register_types_my_module();
그런 다음 등록과 동일한 바이너리의 일부인 함수의 구현에 다음 코드 조각을 추가합니다:
volatile auto registration = &qml_register_types_my_module; Q_UNUSED(registration);
C++로 QML 확장 프로그램 작성하기 튜토리얼에는 QML 플러그인 만들기에 대한 장도 포함되어 있습니다.
QQmlEngine::importPlugin() 및 Qt 플러그인 생성 방법도참조하세요 .
멤버 함수 문서
[explicit]
QQmlEngineExtensionPlugin::QQmlEngineExtensionPlugin(QObject *parent = nullptr)
주어진 parent 을 사용하여 QML 확장 플러그인을 생성합니다.
이 생성자는 Q_PLUGIN_METADATA() 매크로에 의해 자동으로 호출되므로 명시적으로 호출할 필요가 없습니다.
[override virtual]
void QQmlEngineExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
engine 을 사용하여 uri 에서 확장을 초기화합니다. 여기서 애플리케이션 플러그인은 예를 들어 엔진의 루트 컨텍스트에서 일부 데이터 또는 객체를 컨텍스트 프로퍼티로 QML에 노출할 수 있습니다.
매크로 문서
[since 6.2]
Q_IMPORT_QML_PLUGIN(PluginName)
메타데이터를 선언하는 플러그인 확장 클래스 이름이 PluginName 인 플러그인이 정적 빌드에 링크되도록 합니다. qt_add_qml_module을 사용하여 생성된 모듈의 경우, CLASS_NAME
인수가 지정되지 않는 한 기본 플러그인 확장 클래스 이름은 QML 모듈 URI에서 점을 밑줄로 대체하여 계산됩니다.
예를 들어
qt_add_qml_module(myplugin # The plugin extension class name in this case is my_Company_QmlComponents. URI my.Company.QmlComponents ... )
이 매크로는 Qt 6.2에 도입되었습니다.
Q_IMPORT_PLUGIN 를참조하십시오 .
© 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.