forked from qt-creator/qt-creator
QmlDesigner: Add registerPropertyMap to StudioWelcome
This allows to easily register a singleton similar to context properties. Change-Id: I0c391165473a949e7fd09d907e3a0752c23ba62d Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "studioquickwidget.h"
|
||||
|
||||
#include <QQuickItem>
|
||||
#include <QVBoxLayout>
|
||||
#include <QtQml/QQmlEngine>
|
||||
|
||||
@@ -58,3 +59,26 @@ QList<QQmlError> StudioQuickWidget::errors() const
|
||||
{
|
||||
return m_quickWidget->errors();
|
||||
}
|
||||
|
||||
StudioPropertyMap *StudioQuickWidget::registerPropertyMap(const QByteArray &name)
|
||||
{
|
||||
StudioPropertyMap *map = new StudioPropertyMap(this);
|
||||
[[maybe_unused]] const int typeIndex = qmlRegisterSingletonType<StudioPropertyMap>(
|
||||
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<PropertyPair> &properties)
|
||||
{
|
||||
for (const PropertyPair &pair : properties)
|
||||
insert(pair.name, pair.value);
|
||||
}
|
||||
|
@@ -6,8 +6,23 @@
|
||||
#include "../qmldesignerbase_global.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QQmlPropertyMap>
|
||||
#include <QtQuickWidgets/QQuickWidget>
|
||||
|
||||
class QMLDESIGNERBASE_EXPORT StudioPropertyMap : public QQmlPropertyMap
|
||||
{
|
||||
public:
|
||||
struct PropertyPair
|
||||
{
|
||||
QString name;
|
||||
QVariant value;
|
||||
};
|
||||
|
||||
explicit StudioPropertyMap(QObject *parent = 0);
|
||||
|
||||
void setProperties(const QList<PropertyPair> &properties);
|
||||
};
|
||||
|
||||
class QMLDESIGNERBASE_EXPORT StudioQuickWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -29,6 +44,9 @@ public:
|
||||
|
||||
QList<QQmlError> errors() const;
|
||||
|
||||
StudioPropertyMap *registerPropertyMap(const QByteArray &name);
|
||||
QQuickWidget *quickWidget() const;
|
||||
|
||||
private:
|
||||
QQuickWidget *m_quickWidget = nullptr;
|
||||
};
|
||||
|
Reference in New Issue
Block a user