diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-10-01 14:43:37 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-10-14 10:42:29 +0200 |
commit | ee62b2824fe91e95a3f8218b93ba55a2ef6660d0 (patch) | |
tree | ff403362ee4b73c9d90c640d29bf22a0aba94c23 /src/qml/qml/qqmlextensionplugin.cpp | |
parent | 8cb08ca42157bb43b523103a6d1be94534be0597 (diff) |
Add support for semi-automatic QML type registrations
We can use the new moc JSON output to collect all meta-objects at build
time and, for those that include QML element registration meta-data,
generate code that automatically registers these types with QML. This
eliminates the need to call qmlRegisterType manually.
For now this generates free-standing functions (per module) that need to
be called manually. This is intended as an intermediate step.
Task-number: QTBUG-68796
Change-Id: Ib414eef9757344feee488ebc7388f957b975347f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlextensionplugin.cpp')
-rw-r--r-- | src/qml/qml/qqmlextensionplugin.cpp | 56 |
1 files changed, 43 insertions, 13 deletions
diff --git a/src/qml/qml/qqmlextensionplugin.cpp b/src/qml/qml/qqmlextensionplugin.cpp index c1c971f0a9..26364661a8 100644 --- a/src/qml/qml/qqmlextensionplugin.cpp +++ b/src/qml/qml/qqmlextensionplugin.cpp @@ -43,10 +43,11 @@ QT_BEGIN_NAMESPACE /*! - \since 5.0 + \since 5.14 \inmodule QtQml - \class QQmlExtensionPlugin - \brief The QQmlExtensionPlugin class provides an abstract base for custom QML extension plugins. + \class QQmlEngineExtensionPlugin + \brief The QQmlEngineExtensionPlugin class provides an abstract base for custom QML extension + plugins. \ingroup plugins @@ -60,6 +61,7 @@ QT_BEGIN_NAMESPACE /*! \fn void QQmlExtensionPlugin::registerTypes(const char *uri) + \internal Registers the QML types in the given \a uri. Subclasses should implement this to call qmlRegisterType() for all types which are provided by the extension @@ -70,26 +72,39 @@ QT_BEGIN_NAMESPACE */ /*! + \internal +*/ +QQmlExtensionPlugin::QQmlExtensionPlugin(QObject *parent) + : QObject(*(new QQmlExtensionPluginPrivate), parent) +{ +} + +/*! Constructs a QML extension plugin with the given \a parent. Note that this constructor is invoked automatically by the Q_PLUGIN_METADATA() macro, so there is no need for calling it explicitly. -*/ -QQmlExtensionPlugin::QQmlExtensionPlugin(QObject *parent) - : QObject(*(new QQmlExtensionPluginPrivate), parent) + */ +QQmlEngineExtensionPlugin::QQmlEngineExtensionPlugin(QObject *parent) + : QObject(parent) { } + /*! \internal */ -QQmlExtensionPlugin::~QQmlExtensionPlugin() -{ -} +QQmlExtensionPlugin::~QQmlExtensionPlugin() = default; + +/*! + \internal + */ +QQmlEngineExtensionPlugin::~QQmlEngineExtensionPlugin() = default; /*! \since 5.1 + \internal \brief Returns the URL of the directory from which the extension is loaded. This is useful when the plugin also needs to load QML files or other @@ -102,14 +117,23 @@ QUrl QQmlExtensionPlugin::baseUrl() const } /*! - \fn void QQmlExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) + \internal +*/ + +void QQmlExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) +{ + Q_UNUSED(engine); + Q_UNUSED(uri); +} + +/*! + \fn void QQmlEngineExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) Initializes the extension from the \a uri using the \a engine. Here an application plugin might, for example, expose some data or objects to QML, as context properties on the engine's root context. -*/ - -void QQmlExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) + */ +void QQmlEngineExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { Q_UNUSED(engine); Q_UNUSED(uri); @@ -127,6 +151,12 @@ void QQmlExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) \inmodule QtQml */ +/*! + \class QQmlEngineExtensionInterface + \internal + \inmodule QtQml +*/ + QT_END_NAMESPACE #include "moc_qqmlextensionplugin.cpp" |