diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-05 17:52:00 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-12 20:58:14 +0100 |
commit | e35b82922398e09779a162592cdedd50677e63cf (patch) | |
tree | 0f28e7e8bbf011c16399c9b84917dc5dda70f88f /tests | |
parent | e3cca3df718d8ff298d2d73ce4d6139a3ba620f9 (diff) |
QQmlListReference: Allow construction from a QVariant
Currently there is no public API to transform a QVariant holding a
QQmlListProperty into a QQmlListReference. We cannot pass
QQmlListProperty itself as that is templated. The metatype-based casting
is somewhat evil, but not more so than what we already have in the other
ctor.
Change-Id: I2d56499b1fd188613bc71016cb00ec23081d3cea
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qqmllistreference/tst_qqmllistreference.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllistreference/tst_qqmllistreference.cpp b/tests/auto/qml/qqmllistreference/tst_qqmllistreference.cpp index bf5ee92374..c6accb3908 100644 --- a/tests/auto/qml/qqmllistreference/tst_qqmllistreference.cpp +++ b/tests/auto/qml/qqmllistreference/tst_qqmllistreference.cpp @@ -179,6 +179,17 @@ void tst_qqmllistreference::qmllistreference() tt.data.append(&tt); QCOMPARE(r.count(), 1); + + const QMetaObject *m = tt.metaObject(); + const int index = m->indexOfProperty("data"); + const QMetaProperty prop = m->property(index); + const QVariant var = prop.read(&tt); + + QQmlListReference fromVar(var); + QVERIFY(fromVar.isValid()); + QCOMPARE(fromVar.count(), 1); + fromVar.append(&tt); + QCOMPARE(tt.data.count(), 2); } void tst_qqmllistreference::qmllistreference_invalid() @@ -805,6 +816,17 @@ void tst_qqmllistreference::engineTypes() QVERIFY(ref.listElementType()); QVERIFY(ref.listElementType() != &QObject::staticMetaObject); + + const QMetaObject *m = o->metaObject(); + const int index = m->indexOfProperty("myList"); + const QMetaProperty prop = m->property(index); + const QVariant var = prop.read(o); + + QQmlListReference fromVar(var, &engine); + QVERIFY(fromVar.isValid()); + QCOMPARE(fromVar.count(), 2); + QCOMPARE(fromVar.listElementType(), ref.listElementType()); + delete o; } |