qt_generate_foreign_qml_types
あるターゲットの型をQMLモジュールに登録します。
このコマンドはQt6
パッケージのQml
コンポーネントで定義されています:
find_package(Qt6 REQUIRED COMPONENTS Qml)
概要
qt_generate_foreign_qml_types( source_target destination_qml_target )
バージョンレスコマンドが無効の場合は、qt6_generate_foreign_qml_types()
。このコマンドと同じ引数をサポートしています。
説明
qt_generate_foreign_qml_types
QML登録マクロ( のような)によってマークされた型を から取り出し、QMLモジュール に外部型として登録します。QML_ELEMENT source_target
destination_qml_target
これはQMLに直接依存することなく、QMLを任意に統合したライブラリを作成したい場合に便利です。
// myclass.h #include <QtQmlIntegration/qqmlintegration.h> class MyClass : public QObject { QML_ELEMENT Q_OBJECT // [...] };
# CMakeLists.txt qt_add_library(mylib myclass.h ...) target_link_libraries(mylib PRIVATE Qt::Core Qt::QmlIntegration) qt_add_qml_module(mylib_declarative VERSION 1.0 URI "mylib" ... ) qt_generate_foreign_qml_types(mylib mylib_declarative)
注意: 上記の例では、mylib
はQtQml やQtQuick には依存せず、ヘッダのみの QmlIntegration ターゲット(QML_ELEMENT
マクロを提供する QtQmlIntegration/qqmlintegration.h ヘッダ)にのみ依存します。
この効果は、QML_FOREIGN
を QML ライブラリ内のカスタム構造体と共に使用して型を公開するのと同等です。
注意: 既存のシングルトンインスタンスのライフサイクルをQMLに公開するといったカスタムの 振る舞いを実装するためには、QMLライブラリにカスタム型を追加する必要があります (上の例では mylib_declarative)。その際、qt_generate_foreign_qml_types()がQML統合構造体を生成しないように、元のC++クラスからQML_ELEMENT や同様のマクロを省略する必要があります。QMLマクロは、シングルトンファクトリー関数と同様に、QML_FOREIGN を含む構造体に追加することができます。
© 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.