このページでは

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 source_target から、QML 登録マクロ( など)によってマークされた型を抽出し、それらを QML モジュール 内の外部型として登録します。QML_ELEMENT 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ライブラリ内のカスタム構造体に対してQML_FOREIGN を使用して型を公開する場合と同等です。

注: 既存のシングルトンインスタンスを、独自のライフサイクルとともに QML に公開するなどのカスタム動作を実装するには 、QML ライブラリ(上記の例では mylib_declarative)にカスタム型を追加する必要があります。 また、qt_generate_foreign_qml_types() がそれらのクラスに対して QML 統合構造体を生成しないように、元の C++ クラスから `QML_ELEMENT ` や類似のマクロを省略する必要があります。QML マクロやシングルトンファクトリ関数は、QML_FOREIGN を含む構造体に追加できます。

© 2026 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.