QModelIndex Class

Header: #include
qmake: QT += core
//构造函数

QModeIndex()

TheQModelIndexclass is used to locate data in a data model.
这个类用在被QAbstractItemModel 派生的模型(item models)的索引。这个索引可以被用在item views,delegates,selection models,用这个索引可以定位项(item)在模型的什么位置。


模型可以通过函数QAbstractItemModel::createIndex() 创建一个新的QModelIndex 对象。使用QModelIndex 构造函数构造一个无效的模型索引,在模型中引用顶级项目(top-level items)时,通常使用无效索引作为父索引。


在模型中,一个索引用来表示对应的一个项(item),每个索引都包含有确定对应项的位置的所有信息。通过给定的row和column可以确定一个索引,每个索引有可能包含一个父索引;用row(),column(),parent() 这些函数获取相应的信息。模型中的每一个顶级项目(top-level item)都是一个没有父索引的,正是由于这个原因,parent() 将会返回一个无效的索引,这个索引与无参构造函数QModelIndex() 构造的索引是等价的。


为了在模型中获得一个已经存在的项目的索引,调用函数QAbstractItemModel::index() 获取行号和列号,以及父索引。当要引用一个顶级项目时(top-level-item),用QModelIndex() 作为父索引,这个无效索引。


如果知道索引引用的是什么模型,用函数model() 返回模型类型

const QAbstractItemModel *QModelIndex::model() const;

/*Returns a pointer to the model containing the item that this index refers to.
A const pointer to the model is returned because calls to non-const functions of the model might invalidate the model index and possibly crash your application.*/

如果检查一个项是否有孩子索引,chiled() 函数可以实现。

QTreeWidgetItem *QTreeWidgetItem::child(int index) const;
/*Returns the item at the given index in the list of the item's children.*/

遍历索引级别相同的项,可使用sibling()函数

QModelIndex QModelIndex::sibling(int row, int column) const;
/*Returns the sibling(姊妹的意思) at row and column. If there is no sibling at this position, an invalid QModelIndex is returned.*/

注意
模型索引(Model indexes)应该在用完后,把它及时清除。在调用更改模型的结构或删除项目的模型函数之后,不应该让索引保持有效。如果您需要在一段时间内使用一个模型索引,那么使用QPersistentModelIndex

你可能感兴趣的:(Qt)