diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-07-25 14:24:19 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-07-26 21:17:28 +0200 |
commit | 6ea2a1cdb728635f9bd3cf239f751d4e88610881 (patch) | |
tree | 8db607732c7fcd1ea8dd4d0692f1d1046a4fa6a8 /src/qmlmodels/qqmllistaccessor.cpp | |
parent | aa9412615bf7cee3fdcfd3854ba73f4cb3ed93b7 (diff) |
QQmlListAccessor: Accept QQmlListProperty
So far we have only accepted QQmlListReference. However, we can also
pass a QQmlListProperty around as value.
Pick-to: 6.2 6.3 6.4
Fixes: QTBUG-105137
Change-Id: I7d4cd3048b62594298f91013c4cda5ec864a28df
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'src/qmlmodels/qqmllistaccessor.cpp')
-rw-r--r-- | src/qmlmodels/qqmllistaccessor.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/qmlmodels/qqmllistaccessor.cpp b/src/qmlmodels/qqmllistaccessor.cpp index 244a1b369d..d68d0a2b90 100644 --- a/src/qmlmodels/qqmllistaccessor.cpp +++ b/src/qmlmodels/qqmllistaccessor.cpp @@ -39,6 +39,7 @@ void QQmlListAccessor::setList(const QVariant &v) d = d.value<QJSValue>().toVariant(); variantsType = d.metaType(); } + if (!d.isValid()) { m_type = Invalid; } else if (variantsType == QMetaType::fromType<QStringList>()) { @@ -49,6 +50,9 @@ void QQmlListAccessor::setList(const QVariant &v) m_type = VariantList; } else if (variantsType == QMetaType::fromType<QList<QObject *>>()) { m_type = ObjectList; + } else if (variantsType.flags() & QMetaType::IsQmlList) { + d = QVariant::fromValue(QQmlListReference(d)); + m_type = ListProperty; } else if (variantsType == QMetaType::fromType<QQmlListReference>()) { m_type = ListProperty; } else if (variantsType.flags() & QMetaType::PointerToQObject) { |