diff options
-rw-r--r-- | src/qmlmodels/qqmlitemmodels.qdoc | 7 | ||||
-rw-r--r-- | src/qmlmodels/qqmlmodelindexvaluetype_p.h | 6 | ||||
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/data/modelindex.qml | 2 | ||||
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/data/persistentmodelindex.qml | 2 | ||||
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp | 2 |
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); |