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()函數訪問到。