当继承QAbstractTableModel时,获取给定行和列的QModelIndex的正确方法是什么(例如,提供方便的方法数据(int row,int column))?
有index()和createIndex() - 它们似乎都这样做了吗?
示例:
TableModel::data(int row, int column, int role) const
{
return data(index(row, column), role);
}
答案 0 :(得分:5)
你想要的是index(),createIndex()是用于生成索引的子类。但是,QModelIndex有一个data()成员。因此,model-> index(row,column).data(role)可能就是你想要的。不需要辅助功能。
答案 1 :(得分:2)
我想说index()在这里是惯用的方式,那么你的代码是正确的。
通常,当您需要覆盖index()和parent()方法时,createIndex()用于QAbstractItemModel的子类中。由于QModelIndex构造函数是私有的,因此必须使用createIndex()来创建新索引。
此外,QModelIndex可以存储一些内部数据(QModelIndex::internalPointer)。 createIndex()还用于将内部指针传递给创建的QModelIndex。