1

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

通过以下方式获取当前对象是否合法

myMap->values().at(index.row())

由于(未排序的)地图的标识符被绕过了,这是否意味着(排序、插入)?我的意思是对于 QAbstractTableModel::setData() 我需要绕过相同的地图标识符?!谢谢。

4

3 回答 3

1

很晚的答案,但仍然有用:

(myMap->constBegin() + index.row()).key();
(myMap->constBegin() + index.row()).value();

将避免复制values()方法的技巧

于 2018-11-05T15:57:30.213 回答
0

当您说“标识符”时,我假设您的意思是key,而“相应的对象”是valueQMap是按定义按键排序的。

如果您从不打算使用QMap键值功能,您应该考虑将您的值存储在一个QList容器中,并按照您的建议根据行索引访问它。

于 2014-07-17T14:50:33.957 回答
-1

QMap::values按其键的升序返回所有值,因此您的代码可能会起作用。不过,我会使用以下内容:

myMap[this->index(index.row(), 0).data().toString()]

前提是您从 QAbstractTableModel 调用它,并且您的密钥位于第 0 列。

于 2013-03-15T08:41:29.777 回答