aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlengine.h
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2022-12-06 13:28:48 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2022-12-08 15:48:34 +0100
commite43638c8a830b9ade737b361fa471381b3afdb11 (patch)
treef693d837b8631357f6bf9e987c09ec846a8b536e /src/qml/qml/qqmlengine.h
parentc3ebe3ff3b8fb2c5a3f97bcb83fb594246bc8130 (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.h12
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