aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qmlmodels/qqmlitemmodels.qdoc7
-rw-r--r--src/qmlmodels/qqmlmodelindexvaluetype_p.h6
-rw-r--r--tests/auto/qml/qqmlitemmodels/data/modelindex.qml2
-rw-r--r--tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml2
-rw-r--r--tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp2
5 files changed, 18 insertions, 1 deletions
diff --git a/src/qmlmodels/qqmlitemmodels.qdoc b/src/qmlmodels/qqmlitemmodels.qdoc
index 7f52e795c0..188ef3252d 100644
--- a/src/qmlmodels/qqmlitemmodels.qdoc
+++ b/src/qmlmodels/qqmlitemmodels.qdoc
@@ -29,7 +29,12 @@
\li \b internalId : quint64
\endlist
- All these properties are read-only, as are their C++ counterparts.
+ All these properties are read-only, as are their C++ counterparts. In addition,
+ we also expose the following functions:
+
+ \list
+ \li QVariant \b{data}(int \e role) (since Qt 6.7)
+ \endlist
\note The usual caveats apply to QModelIndex in QML. If the underlying model changes
or gets deleted, it may become dangerous to access its properties. Therefore, you
diff --git a/src/qmlmodels/qqmlmodelindexvaluetype_p.h b/src/qmlmodels/qqmlmodelindexvaluetype_p.h
index 4789717d3e..35ebacc051 100644
--- a/src/qmlmodels/qqmlmodelindexvaluetype_p.h
+++ b/src/qmlmodels/qqmlmodelindexvaluetype_p.h
@@ -42,6 +42,9 @@ public:
Q_INVOKABLE QString toString() const
{ return QLatin1String("QModelIndex") + propertiesString(v); }
+ Q_REVISION(6, 7) Q_INVOKABLE QVariant data(int role = Qt::DisplayRole) const
+ { return v.data(role); }
+
inline int row() const noexcept { return v.row(); }
inline int column() const noexcept { return v.column(); }
inline QModelIndex parent() const { return v.parent(); }
@@ -78,6 +81,9 @@ public:
Q_INVOKABLE QString toString() const
{ return QLatin1String("QPersistentModelIndex") + QQmlModelIndexValueType::propertiesString(v); }
+ Q_REVISION(6, 7) Q_INVOKABLE QVariant data(int role = Qt::DisplayRole) const
+ { return v.data(role); }
+
inline int row() const { return v.row(); }
inline int column() const { return v.column(); }
inline QModelIndex parent() const { return v.parent(); }
diff --git a/tests/auto/qml/qqmlitemmodels/data/modelindex.qml b/tests/auto/qml/qqmlitemmodels/data/modelindex.qml
index 2756f04120..7bf8bfb5a2 100644
--- a/tests/auto/qml/qqmlitemmodels/data/modelindex.qml
+++ b/tests/auto/qml/qqmlitemmodels/data/modelindex.qml
@@ -8,6 +8,7 @@ ItemModelsTest {
property var parent: modelIndex.parent
property var model: modelIndex.model
property var internalId: modelIndex.internalId
+ property var displayData: modelIndex.data(Qt.DisplayRole)
onSignalWithModelIndex: {
isValid = index.valid
@@ -16,5 +17,6 @@ ItemModelsTest {
parent = index.parent
model = index.model
internalId = index.internalId
+ displayData = index.data(Qt.DisplayRole)
}
}
diff --git a/tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml b/tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml
index 85987bdcac..aa43252100 100644
--- a/tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml
+++ b/tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml
@@ -8,6 +8,7 @@ ItemModelsTest {
property var parent: persistentModelIndex.parent
property var model: persistentModelIndex.model
property var internalId: persistentModelIndex.internalId
+ property var displayData: persistentModelIndex.data(Qt.DisplayRole)
property var pmi
@@ -18,6 +19,7 @@ ItemModelsTest {
parent = index.parent
model = index.model
internalId = index.internalId
+ displayData = index.data(Qt.DisplayRole)
pmi = createPersistentModelIndex(model.index(0, 0))
}
diff --git a/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp b/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp
index 339a61f996..936d4ac8a8 100644
--- a/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp
+++ b/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp
@@ -55,6 +55,7 @@ void tst_qqmlitemmodels::modelIndex()
QCOMPARE(object->property("parent").toModelIndex(), index.parent());
QCOMPARE(object->property("model").value<QAbstractItemModel *>(), index.model());
QCOMPARE(object->property("internalId").toULongLong(), index.internalId());
+ QCOMPARE(object->property("displayData"), index.data(Qt::DisplayRole));
if (i < 3) {
index = model.index(2 + i, 4 - i, index);
@@ -79,6 +80,7 @@ void tst_qqmlitemmodels::persistentModelIndex()
QCOMPARE(object->property("parent").toModelIndex(), index.parent());
QCOMPARE(object->property("model").value<QAbstractItemModel *>(), index.model());
QCOMPARE(object->property("internalId").toULongLong(), index.internalId());
+ QCOMPARE(object->property("displayData"), index.data(Qt::DisplayRole));
if (i < 2) {
index = model.index(2 + i, 4 - i, index);