QAbstractTableModel:index()与createIndex()

时间:2012-11-17 22:56:32

标签: qt qmodelindex

当继承QAbstractTableModel时,获取给定行和列的QModelIndex的正确方法是什么(例如,提供方便的方法数据(int row,int column))?

有index()和createIndex() - 它们似乎都这样做了吗?

示例:

TableModel::data(int row, int column, int role) const
{
    return data(index(row, column), role);
}

2 个答案:

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