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 マクロを提供する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.