diff --git a/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp b/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp index 8e19e71a562..2cfe5aa9741 100644 --- a/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp +++ b/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp @@ -3,6 +3,7 @@ #include "studioquickwidget.h" +#include #include #include @@ -58,3 +59,26 @@ QList StudioQuickWidget::errors() const { return m_quickWidget->errors(); } + +StudioPropertyMap *StudioQuickWidget::registerPropertyMap(const QByteArray &name) +{ + StudioPropertyMap *map = new StudioPropertyMap(this); + [[maybe_unused]] const int typeIndex = qmlRegisterSingletonType( + name.data(), 1, 0, name.data(), [map](QQmlEngine *, QJSEngine *) { return map; }); + return map; +} + +QQuickWidget *StudioQuickWidget::quickWidget() const +{ + return m_quickWidget; +} + +StudioPropertyMap::StudioPropertyMap(QObject *parent) + : QQmlPropertyMap(parent) +{} + +void StudioPropertyMap::setProperties(const QList &properties) +{ + for (const PropertyPair &pair : properties) + insert(pair.name, pair.value); +} diff --git a/src/plugins/qmldesignerbase/utils/studioquickwidget.h b/src/plugins/qmldesignerbase/utils/studioquickwidget.h index 17e31a43943..ef64fb6a69d 100644 --- a/src/plugins/qmldesignerbase/utils/studioquickwidget.h +++ b/src/plugins/qmldesignerbase/utils/studioquickwidget.h @@ -6,8 +6,23 @@ #include "../qmldesignerbase_global.h" #include +#include #include +class QMLDESIGNERBASE_EXPORT StudioPropertyMap : public QQmlPropertyMap +{ +public: + struct PropertyPair + { + QString name; + QVariant value; + }; + + explicit StudioPropertyMap(QObject *parent = 0); + + void setProperties(const QList &properties); +}; + class QMLDESIGNERBASE_EXPORT StudioQuickWidget : public QWidget { Q_OBJECT @@ -29,6 +44,9 @@ public: QList errors() const; + StudioPropertyMap *registerPropertyMap(const QByteArray &name); + QQuickWidget *quickWidget() const; + private: QQuickWidget *m_quickWidget = nullptr; };