diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-03-14 15:56:28 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-03-23 23:21:56 +0100 |
commit | cc6bd22b61cff5b992b594b69552c8f41f65f13b (patch) | |
tree | 13aad8f781c767d793d29a1499f94383052d5578 /src/qml/qml/qqml.cpp | |
parent | 00b59c391e88d37dd09f187000416a3501a1e009 (diff) |
Add public API for retrieving the extension object
Change-Id: I28bc1c177cb78d85d844c7a5cd5b6710db8fd65d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/qml/qml/qqml.cpp')
-rw-r--r-- | src/qml/qml/qqml.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/qml/qml/qqml.cpp b/src/qml/qml/qqml.cpp index d8d366a716..8859dea711 100644 --- a/src/qml/qml/qqml.cpp +++ b/src/qml/qml/qqml.cpp @@ -149,6 +149,25 @@ QObject *qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc return resolveAttachedProperties(func, data, object, create); } +QObject *qmlExtendedObject(QObject *object) +{ + if (!object) + return nullptr; + + void *result = nullptr; + QObjectPrivate *d = QObjectPrivate::get(object); + if (!d->metaObject) + return nullptr; + + const int id = d->metaObject->metaCall( + object, QMetaObject::CustomCall, + QQmlProxyMetaObject::ExtensionObjectId, &result); + if (id != QQmlProxyMetaObject::ExtensionObjectId) + return nullptr; + + return static_cast<QObject *>(result); +} + int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, |