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.