4

当子类化 QAbstractTableModel 时,为给定的行和列获取 QModelIndex 的正确方法是什么(例如,提供方便的方法 data(int row, int column))?

有 index() 和 createIndex() - 他们似乎都这样做?

例子:

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

2 回答 2

5

你想要的是 index(),createIndex() 是子类用来生成索引的。但是,QModelIndex 有一个 data() 成员。所以,model->index(row, column).data(role) 可能是你想要的。不需要辅助函数。

于 2012-11-18T03:34:52.383 回答
2

我想说 index() 是这里的惯用方式,那么您的代码就是正确的。

通常,在 QAbstractItemModel 的子类中使用 createIndex(),当您需要覆盖 index() 和 parent() 方法时。由于 QModelIndex 构造函数是私有的,因此您必须使用 createIndex() 来创建新索引。

此外,QModelIndex 可以存储一些内部数据(QModelIndex::internalPointer)。createIndex() 还用于将内部指针传递给创建的 QModelIndex。

于 2012-11-18T03:47:18.320 回答