diff options
author | Pierre-Yves Siret <gr3cko@gmail.com> | 2019-12-20 01:51:39 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-01-15 14:01:08 +0000 |
commit | 43e3c21a0bad9141b6c35cc4ee4a58b4d824462a (patch) | |
tree | 4d3c1cc3e0a84eb0fa6d53acba4019a849d19102 /src/qml/qml/qqmlvaluetype.cpp | |
parent | 5a4ffa0de0ecc666a514ef60f0149a76d25b040d (diff) |
Add Q_GADGET Wrapper for QQmlProperty
This enable exposing a QQmlProperty as a value type to QML code.
Only object and name are exposed as a properties to keep it simple.
We might want later to expose the property of a Binding or a Behavior
as a property for complex usecases. This permits exposing it as one
self contained value instead of a pair of unrelated object and name.
Task-number: QTBUG-70964
Task-number: QTBUG-73892
Change-Id: I3a46212446f43f3a7e301943cb49d3a48c377de3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlvaluetype.cpp')
-rw-r--r-- | src/qml/qml/qqmlvaluetype.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlvaluetype.cpp b/src/qml/qml/qqmlvaluetype.cpp index a4737b3da9..90a10c8d9a 100644 --- a/src/qml/qml/qqmlvaluetype.cpp +++ b/src/qml/qml/qqmlvaluetype.cpp @@ -48,6 +48,8 @@ #endif #include <private/qmetatype_p.h> +Q_DECLARE_METATYPE(QQmlProperty) + QT_BEGIN_NAMESPACE namespace { @@ -143,7 +145,8 @@ const QMetaObject *QQmlValueTypeFactoryImpl::metaObjectForMetaType(int t) if (t == qMetaTypeId<QItemSelectionRange>()) return &QQmlItemSelectionRangeValueType::staticMetaObject; #endif - + if (t == qMetaTypeId<QQmlProperty>()) + return &QQmlPropertyValueType::staticMetaObject; if (const QMetaObject *mo = QQml_valueTypeProvider()->metaObjectForMetaType(t)) return mo; break; @@ -580,6 +583,16 @@ void QQmlEasingValueType::setBezierCurve(const QVariantList &customCurveVariant) v = newEasingCurve; } +QObject *QQmlPropertyValueType::object() const +{ + return v.object(); +} + +QString QQmlPropertyValueType::name() const +{ + return v.name(); +} + QVariantList QQmlEasingValueType::bezierCurve() const { QVariantList rv; |