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 "studioquickwidget.h"
|
||||||
|
|
||||||
|
#include <QQuickItem>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QtQml/QQmlEngine>
|
#include <QtQml/QQmlEngine>
|
||||||
|
|
||||||
@@ -58,3 +59,26 @@ QList<QQmlError> StudioQuickWidget::errors() const
|
|||||||
{
|
{
|
||||||
return m_quickWidget->errors();
|
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 "../qmldesignerbase_global.h"
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QQmlPropertyMap>
|
||||||
#include <QtQuickWidgets/QQuickWidget>
|
#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
|
class QMLDESIGNERBASE_EXPORT StudioQuickWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -29,6 +44,9 @@ public:
|
|||||||
|
|
||||||
QList<QQmlError> errors() const;
|
QList<QQmlError> errors() const;
|
||||||
|
|
||||||
|
StudioPropertyMap *registerPropertyMap(const QByteArray &name);
|
||||||
|
QQuickWidget *quickWidget() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QQuickWidget *m_quickWidget = nullptr;
|
QQuickWidget *m_quickWidget = nullptr;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user