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