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)

注意: 上記の例では、mylibQtQmlQtQuick には依存せず、ヘッダのみの 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。