IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

qt_generate_foreign_qml_types

Registers types from one target in a QML module.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

qt_generate_foreign_qml_types

Registers types from one target in a QML module.

The command is defined in the Qml component of the Qt6 package, which can be loaded like so:

 
Sélectionnez
find_package(Qt6 REQUIRED COMPONENTS Qml)

This command is in technology preview and may change in future releases.

Synopsis

 
Sélectionnez
qt_generate_foreign_qml_types(
    source_target
    destination_qml_target
)

If versionless commands are disabled, use qt6_generate_foreign_qml_types() instead. It supports the same set of arguments as this command.

Description

qt_generate_foreign_qml_types extracts types marked via QML registration macros (like QML_ELEMENT) from source_target and registers them as foreign types in the QML module destination_qml_target.

This can be useful when one wants to create a library with optional QML integration, without depending directly on QML.

 
Sélectionnez
// myclass.h
#include <QtQmlIntegration/qqmlintegration.h>

class MyClass : public QObject
{
    QML_ELEMENT
    Q_OBJECT

    // [...]
};
 
Sélectionnez
# 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)

In the example above, mylib does not depend on QtQml or QtQuick, but only on the header-only QmlIntegration target (for the QtQmlIntegration/qqmlintegration.h header, which provides the QML_ELEMENT macro).

The effect is equivalent to using QML_FOREIGN with custom structs in the QML library to expose the types.

In order to implement custom behavior, such as exposing an existing singleton instance with its own life cycle to QML, you should add custom types to your QML library (mylib_declarative in the above example). In turn, you should omit the QML_ELEMENT and similar macros from the original C++ classes so that qt_generate_foreign_qml_types() does not generate more QML integration structs for them. The QML macros, as well as any singleton factory functions, can be added to the structs that contain the QML_FOREIGN.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+