diff options
Diffstat (limited to 'src/qmlmodels/qqmlobjectmodel.cpp')
-rw-r--r-- | src/qmlmodels/qqmlobjectmodel.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/qmlmodels/qqmlobjectmodel.cpp b/src/qmlmodels/qqmlobjectmodel.cpp index 7409178616..8e7b0a9b5f 100644 --- a/src/qmlmodels/qqmlobjectmodel.cpp +++ b/src/qmlmodels/qqmlobjectmodel.cpp @@ -154,7 +154,8 @@ public: void clear() { Q_Q(QQmlObjectModel); - for (const Item &child : qAsConst(children)) + const auto copy = children; + for (const Item &child : copy) emit q->destroyingItem(child.item); remove(0, children.count()); } @@ -170,6 +171,8 @@ public: QList<Item> children; }; +Q_DECLARE_TYPEINFO(QQmlObjectModelPrivate::Item, Q_PRIMITIVE_TYPE); + /*! \qmltype ObjectModel @@ -278,7 +281,7 @@ QVariant QQmlObjectModel::variantValue(int index, const QString &role) Q_D(QQmlObjectModel); if (index < 0 || index >= d->children.count()) return QString(); - return QQmlEngine::contextForObject(d->children.at(index).item)->contextProperty(role); + return d->children.at(index).item->property(role.toUtf8().constData()); } QQmlIncubator::Status QQmlObjectModel::incubationStatus(int) |