qt_generate_foreign_qml_types

Registriert Typen aus einem Ziel in einem QML-Modul.

Das Kommando ist in der Qml Komponente des Qt6 Pakets definiert, die wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Qml)

Synopsis

qt_generate_foreign_qml_types(
    source_target
    destination_qml_target
)

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_generate_foreign_qml_types(). Er unterstützt den gleichen Satz von Argumenten wie dieser Befehl.

Beschreibung

qt_generate_foreign_qml_types extrahiert über QML-Registrierungsmakros markierte Typen (wie QML_ELEMENT) aus source_target und registriert sie als fremde Typen im QML-Modul destination_qml_target.

Dies kann nützlich sein, wenn man eine Bibliothek mit optionaler QML-Integration erstellen möchte, ohne direkt auf QML angewiesen zu sein.

// 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)

Hinweis: Im obigen Beispiel hängt mylib nicht von QtQml oder QtQuick ab, sondern nur von dem reinen Header-Ziel QmlIntegration (für den QtQmlIntegration/qqmlintegration.h-Header, der das Makro QML_ELEMENT bereitstellt).

Der Effekt ist äquivalent zur Verwendung von QML_FOREIGN mit benutzerdefinierten Strukturen in der QML-Bibliothek, um die Typen darzustellen.

Hinweis: Um ein benutzerdefiniertes Verhalten zu implementieren, wie z.B. eine bestehende Singleton-Instanz mit eigenem Lebenszyklus in QML darzustellen, sollten Sie benutzerdefinierte Typen zu Ihrer QML-Bibliothek hinzufügen (mylib_declarative im obigen Beispiel). Im Gegenzug sollten Sie die QML_ELEMENT und ähnliche Makros aus den ursprünglichen C++-Klassen weglassen, damit qt_generate_foreign_qml_types() keine weiteren QML-Integrationsstrukturen für sie erzeugt. Die QML-Makros sowie alle Singleton-Factory-Funktionen können zu den Structs hinzugefügt werden, die die QML_FOREIGN enthalten.

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