diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-12-06 13:28:48 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2022-12-08 15:48:34 +0100 |
commit | e43638c8a830b9ade737b361fa471381b3afdb11 (patch) | |
tree | f693d837b8631357f6bf9e987c09ec846a8b536e /src/qml/qml/qqmlengine.h | |
parent | c3ebe3ff3b8fb2c5a3f97bcb83fb594246bc8130 (diff) |
QQmlEngine: Add module + type based singletonInstance overload
This makes it consistent with QQmlComponent::loadFromModule. It also
avoids the issue the qmlTypeId does currently only work if the module
has been imported; though that will be fixed in a separate commit.
Change-Id: Id284f7ed2de7af461b782c5b5d71d9bfc0039844
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlengine.h')
-rw-r--r-- | src/qml/qml/qqmlengine.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlengine.h b/src/qml/qml/qqmlengine.h index 7f225f57f5..a8b19e41c6 100644 --- a/src/qml/qml/qqmlengine.h +++ b/src/qml/qml/qqmlengine.h @@ -126,6 +126,9 @@ public: template<typename T> T singletonInstance(int qmlTypeId); + template<typename T> + T singletonInstance(QAnyStringView moduleName, QAnyStringView typeName); + void captureProperty(QObject *object, const QMetaProperty &property) const; public Q_SLOTS: @@ -160,6 +163,15 @@ T QQmlEngine::singletonInstance(int qmlTypeId) { return qobject_cast<T>(singletonInstance<QJSValue>(qmlTypeId).toQObject()); } +template<> +Q_QML_EXPORT QJSValue QQmlEngine::singletonInstance<QJSValue>(QAnyStringView uri, QAnyStringView typeName); + +template<typename T> +T QQmlEngine::singletonInstance(QAnyStringView uri, QAnyStringView typeName) +{ + return qobject_cast<T>(singletonInstance<QJSValue>(uri, typeName).toQObject()); +} + QT_END_NAMESPACE #endif // QQMLENGINE_H |