diff options
author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-06-27 12:54:45 +0200 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-06-27 12:17:13 +0000 |
commit | 07d302522becc9862c044e3c173e48a3112b6868 (patch) | |
tree | 77375c47c81e4f557c1c4ccc5410660baeae1185 /src/qml/types | |
parent | eb98186670db90c7420b46e1442ad67b076d9af3 (diff) |
QQmlInstanceModel: add virtual function to get abstractItemModel
Add a new virtual function to query the model if it's backed by
a QAbstractItemModel. This will be needed later when we create
another model (QQmlTableInstanceModel) that also inherits
QQmlInstanceModel.
By having this virtual function, we don't have to check and special
case what kind of model is assigned to QQuickTableView, as long
as it has a QAIM.
Change-Id: I4080fd601ca1988c5fe448d68bdd156740403c60
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/qml/types')
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 5 | ||||
-rw-r--r-- | src/qml/types/qqmldelegatemodel_p.h | 2 | ||||
-rw-r--r-- | src/qml/types/qqmlobjectmodel_p.h | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index f98f57a8ed..76b3b5e76c 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -842,6 +842,11 @@ QObject *QQmlDelegateModel::parts() return d->m_parts; } +const QAbstractItemModel *QQmlDelegateModel::abstractItemModel() const +{ + return d_func()->m_adaptorModel.aim(); +} + void QQmlDelegateModelPrivate::emitCreatedPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package) { for (int i = 1; i < m_groupCount; ++i) diff --git a/src/qml/types/qqmldelegatemodel_p.h b/src/qml/types/qqmldelegatemodel_p.h index 232a40798c..65b1b82d70 100644 --- a/src/qml/types/qqmldelegatemodel_p.h +++ b/src/qml/types/qqmldelegatemodel_p.h @@ -135,6 +135,8 @@ public: QQmlListProperty<QQmlDelegateModelGroup> groups(); QObject *parts(); + const QAbstractItemModel *abstractItemModel() const override; + bool event(QEvent *) override; static QQmlDelegateModelAttached *qmlAttachedProperties(QObject *obj); diff --git a/src/qml/types/qqmlobjectmodel_p.h b/src/qml/types/qqmlobjectmodel_p.h index 267828dcdd..4ac4f1c65b 100644 --- a/src/qml/types/qqmlobjectmodel_p.h +++ b/src/qml/types/qqmlobjectmodel_p.h @@ -60,6 +60,7 @@ QT_BEGIN_NAMESPACE class QObject; class QQmlChangeSet; +class QAbstractItemModel; class Q_QML_PRIVATE_EXPORT QQmlInstanceModel : public QObject { @@ -83,6 +84,7 @@ public: virtual QQmlIncubator::Status incubationStatus(int index) = 0; virtual int indexOf(QObject *object, QObject *objectContext) const = 0; + virtual const QAbstractItemModel *abstractItemModel() const { return nullptr; } Q_SIGNALS: void countChanged(); |