1.一个model中的每个数据元素都有一个model索引。这个索引指明这个数据位于model的位置,比如 行、列等。这就是前面我们曾经说到过的QModelIndex。
2.每个数据元素还要有一组属性值,称为角色(roles)。这个属性值并不是数据的内容,而 是它的属性,比如说,这个数据是用来展示数据的,还是用于显示列头的?因此,这组属性值实际上是Qt的一个enum 定义的,比较常见的有 Qt::DisplayRole 和Qt::EditRole , 另外还有Qt::ToolTipRole, Qt::StatusTipRole, 和Qt::WhatsThisRole等。并且,还有一些属性是用来描述基本的展现属性的, 比如Qt::FontRole, Qt::TextAlignmentRole,Qt::TextColorRole, Qt::BackgroundColorRole等。
3.对于list model而言,要定位其中的一个数据只需要有一个行号就可以了,这个行号可以通过QModelIndex::row()函数进行访问;对于table model而言,这种定位需要有两个值:行号和列号,这两个值可以通过QModelIndex::row()和 QModelIndex::column()这两
个函数访问到。另外,对于tree model而言,用于定位的可以是这个元素的父节点。
4.对于所有的model,这个父节点都可以通过 QModelIndex::parent()函数访问到。