aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlvaluetypeproviders/testtypes.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-05-30 10:25:31 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-06-05 13:27:53 +0000
commit6d1317e11a8a85f23190df02ae0c69f9e4420b0e (patch)
treef10ec56ffcefaeff9f4bb03c408aace2b40d8272 /tests/auto/qml/qqmlvaluetypeproviders/testtypes.h
parentb4ce8051af0110e3a081ec83d1c8ff953243e07c (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.h46
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