我得到了一个带有标识符和相应对象的QMap。子类化QAbstractTableModel :: data()时,分别得到一个带行和列的QModelIndex。每行应代表一个对象(QAbstractTableModel :: rowCount()是myMap-> size())。
通过
获取当前对象是否合法myMap->values().at(index.row())
是否有这种影响(排序,插入),因为(未排序的)地图的标识符被旁路了?我的意思是QAbstractTableModel :: setData()我需要做同样的地图标识符旁路?!感谢。
答案 0 :(得分:0)
当您说“标识符”时,我认为您的意思是键,而“相应的对象”是值。 QMap
按定义按键排序。
如果您从未打算使用QMap
键值功能,则应考虑将值存储在QList
容器中,并根据您的建议基于行索引访问该值。
答案 1 :(得分:0)
答案很晚,但仍然有用:
(myMap->constBegin() + index.row()).key();
(myMap->constBegin() + index.row()).value();
可以避免复制values()
方法
答案 2 :(得分:-1)
QMap::values
按其键的升序返回所有值,因此您的代码可能会起作用。不过,我会使用以下内容:
myMap[this->index(index.row(), 0).data().toString()]
如果您从QAbstractTableModel调用它,并且您的键位于第0列。