如何在QAbstractTableModel :: data()中正确访问QMap

时间:2013-03-15 08:29:16

标签: qt qabstracttablemodel qmap qmodelindex

我得到了一个带有标识符和相应对象的QMap。子类化QAbstractTableModel :: data()时,分别得到一个带行和列的QModelIndex。每行应代表一个对象(QAbstractTableModel :: rowCount()是myMap-> size())。

通过

获取当前对象是否合法
myMap->values().at(index.row())

是否有这种影响(排序,插入),因为(未排序的)地图的标识符被旁路了?我的意思是QAbstractTableModel :: setData()我需要做同样的地图标识符旁路?!感谢。

3 个答案:

答案 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列。