1.一個(gè)model中的每個(gè)數(shù)據(jù)元素都有一個(gè)model索引。這個(gè)索引指明這個(gè)數(shù)據(jù)位于model的位置,比如 行、列等。這就是前面我們?cè)?jīng)說(shuō)到過(guò)的QModelIndex。
2.每個(gè)數(shù)據(jù)元素還要有一組屬性值,稱(chēng)為角色(roles)。這個(gè)屬性值并不是數(shù)據(jù)的內(nèi)容,而 是它的屬性,比如說(shuō),這個(gè)數(shù)據(jù)是用來(lái)展示數(shù)據(jù)的,還是用于顯示列頭的?因此,這組屬性值實(shí)際上是Qt的一個(gè)enum 定義的,比較常見(jiàn)的有 Qt::DisplayRole 和Qt::EditRole , 另外還有Qt::ToolTipRole, Qt::StatusTipRole, 和Qt::WhatsThisRole等。并且,還有一些屬性是用來(lái)描述基本的展現(xiàn)屬性的, 比如Qt::FontRole, Qt::TextAlignmentRole,Qt::TextColorRole, Qt::BackgroundColorRole等。
3.對(duì)于list model而言,要定位其中的一個(gè)數(shù)據(jù)只需要有一個(gè)行號(hào)就可以了,這個(gè)行號(hào)可以通過(guò)QModelIndex::row()函數(shù)進(jìn)行訪(fǎng)問(wèn);對(duì)于table model而言,這種定位需要有兩個(gè)值:行號(hào)和列號(hào),這兩個(gè)值可以通過(guò)QModelIndex::row()和 QModelIndex::column()這兩
個(gè)函數(shù)訪(fǎng)問(wèn)到。另外,對(duì)于tree model而言,用于定位的可以是這個(gè)元素的父節(jié)點(diǎn)。
4.對(duì)于所有的model,這個(gè)父節(jié)點(diǎn)都可以通過(guò) QModelIndex::parent()函數(shù)訪(fǎng)問(wèn)到。