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 を含む構造体に追加することができます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。