summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/itemmodels/qrangemodel.cpp16
-rw-r--r--src/corelib/itemmodels/qrangemodel_impl.h17
2 files changed, 20 insertions, 13 deletions
diff --git a/src/corelib/itemmodels/qrangemodel.cpp b/src/corelib/itemmodels/qrangemodel.cpp
index 3c640f85378..8f1675e9d09 100644
--- a/src/corelib/itemmodels/qrangemodel.cpp
+++ b/src/corelib/itemmodels/qrangemodel.cpp
@@ -1014,6 +1014,22 @@ void QRangeModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDat
\sa QAbstractItemModel::roleNames()
*/
+QHash<int, QByteArray> QRangeModelImplBase::roleNamesForMetaObject(const QMetaObject &metaObject) const
+{
+ const auto defaults = itemModel().QAbstractItemModel::roleNames();
+ QHash<int, QByteArray> result;
+ const int offset = metaObject.propertyOffset();
+ for (int i = offset; i < metaObject.propertyCount(); ++i) {
+ const auto name = metaObject.property(i).name();
+ const int defaultRole = defaults.key(name, -1);
+ if (defaultRole != -1)
+ result[defaultRole] = name;
+ else
+ result[Qt::UserRole + i - offset] = name;
+ }
+ return result;
+}
+
/*!
\reimp
diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h
index 3eecf4e2d09..c52867753c3 100644
--- a/src/corelib/itemmodels/qrangemodel_impl.h
+++ b/src/corelib/itemmodels/qrangemodel_impl.h
@@ -735,6 +735,9 @@ protected:
inline void endMoveRows();
inline QAbstractItemModel &itemModel();
inline const QAbstractItemModel &itemModel() const;
+
+ // implemented in qrangemodel.cpp
+ Q_CORE_EXPORT QHash<int, QByteArray> roleNamesForMetaObject(const QMetaObject &metaObject) const;
};
template <typename Structure, typename Range,
@@ -1318,19 +1321,7 @@ public:
// will be 'void' if columns don't all have the same type
using item_type = typename row_traits::item_type;
if constexpr (QRangeModelDetails::has_metaobject_v<item_type>) {
- const QMetaObject &metaObject = QRangeModelDetails::wrapped_t<item_type>::staticMetaObject;
- const auto defaults = itemModel().QAbstractItemModel::roleNames();
- QHash<int, QByteArray> result;
- const int offset = metaObject.propertyOffset();
- for (int i = offset; i < metaObject.propertyCount(); ++i) {
- const auto name = metaObject.property(i).name();
- const int defaultRole = defaults.key(name, -1);
- if (defaultRole != -1)
- result[defaultRole] = name;
- else
- result[Qt::UserRole + i - offset] = name;
- }
- return result;
+ return roleNamesForMetaObject(QRangeModelDetails::wrapped_t<item_type>::staticMetaObject);
}
return itemModel().QAbstractItemModel::roleNames();