diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-05-30 10:25:31 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-06-05 13:27:53 +0000 |
commit | 6d1317e11a8a85f23190df02ae0c69f9e4420b0e (patch) | |
tree | f10ec56ffcefaeff9f4bb03c408aace2b40d8272 /tests/auto/qml/qqmlvaluetypeproviders/testtypes.h | |
parent | b4ce8051af0110e3a081ec83d1c8ff953243e07c (diff) |
Allow anonymous value types to be constructed
Only anonymous object types are necessarily uncreatable. You don't need
a name in order to construct or populate a value type. Since we can now
construct QSize, QRect, and QPoint, the engine will try to construct
them from the 'F' variants where applicable. Allow this.
Pick-to: 6.5 6.6
Change-Id: I568b93c58d3184d9ac37bf0a542c0e50dd37d8de
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmlvaluetypeproviders/testtypes.h')
-rw-r--r-- | tests/auto/qml/qqmlvaluetypeproviders/testtypes.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlvaluetypeproviders/testtypes.h b/tests/auto/qml/qqmlvaluetypeproviders/testtypes.h index fa8eaaf202..b3aa35dd71 100644 --- a/tests/auto/qml/qqmlvaluetypeproviders/testtypes.h +++ b/tests/auto/qml/qqmlvaluetypeproviders/testtypes.h @@ -109,6 +109,35 @@ private: QList<QSizeF> m_sizes = { QSizeF(1, 1), QSizeF(2, 2) }; }; +struct BarrenValueType +{ + Q_GADGET + Q_PROPERTY(int i READ i WRITE setI) + +public: + BarrenValueType() = default; + Q_INVOKABLE BarrenValueType(const QString &) : m_i(25) {} + + int i() const { return m_i; } + void setI(int newI) { m_i = newI; } + +private: + friend bool operator==(const BarrenValueType &a, const BarrenValueType &b) + { + return a.m_i == b.m_i; + } + + int m_i = 0; +}; + +struct ForeignAnonymousStructuredValueType +{ + Q_GADGET + QML_ANONYMOUS + QML_FOREIGN(BarrenValueType) + QML_STRUCTURED_VALUE +}; + class MyTypeObject : public QObject { Q_OBJECT @@ -133,6 +162,7 @@ class MyTypeObject : public QObject Q_PROPERTY(QVariant variant READ variant NOTIFY changed) Q_PROPERTY(ConstructibleValueType constructible READ constructible WRITE setConstructible NOTIFY constructibleChanged) Q_PROPERTY(StructuredValueType structured READ structured WRITE setStructured NOTIFY structuredChanged) + Q_PROPERTY(BarrenValueType barren READ barren WRITE setBarren NOTIFY barrenChanged) Q_PROPERTY(QDateTime aDateTime READ aDateTime WRITE setADateTime NOTIFY aDateTimeChanged) Q_PROPERTY(QDate aDate READ aDate WRITE setADate NOTIFY aDateChanged) @@ -307,6 +337,19 @@ public: emit aVariantChanged(); } + BarrenValueType barren() const + { + return m_barren; + } + + void setBarren(const BarrenValueType &newBarren) + { + if (m_barren == newBarren) + return; + m_barren = newBarren; + emit barrenChanged(); + } + signals: void changed(); void runScript(); @@ -319,6 +362,8 @@ signals: void aTimeChanged(); void aVariantChanged(); + void barrenChanged(); + public slots: QSize method() { return QSize(13, 14); } private: @@ -329,6 +374,7 @@ private: QDate m_aDate; QTime m_aTime; QVariant m_aVariant; + BarrenValueType m_barren; }; class Padding |