QObject
|
QAbstractItemModel — — — — — — — — — — — — — —
| ?。 。?br>
QAbstractListModel QAbstractProxyModel QAbstractTableModel
?。 。 ?br>
QStringListModel QIdentityProxyModel
QSortFilterProxyModel
QAbstractItemModel
為ITEM-MODEL提供抽象接口,需要繼承實現(xiàn),不能直接實例化
-
每一項都可以通過index訪問到 index()
3.jpg -
每一項都捆綁了很多數(shù)據(jù)元素,可是使用data(),并指定一個角色來提取出該項對應(yīng)角色的數(shù)據(jù)元素?;蛘呤褂胕temData()來一次獲取所有所有角色的數(shù)據(jù)
1.jpg
2.jpg 每個role的數(shù)據(jù)使用一個特定的Qt::ItemDataRole來設(shè)置
-
對于某一個單獨的role的數(shù)據(jù)設(shè)置使用 setData(), setItemData()
1.jpg -
項可以通過flags()查詢,查看他們是否能被選擇、拖拽或以其他方式操作
2.jpg 如果一個項含有子項,hasChildren()返回true
model中的每一個層級都有 rowCount() 和 a columnCount() ,行列的插入刪除使用: insertRows(), insertColumns(), removeRows(), and removeColumns()
子類化: QT中討論子類化model的一篇文章《Model Subclassing Reference》
QAbstractListModel
- 提供一維列表抽象模型(non-hierarchical)
- 這個類提供了比 QAbstractItemModel更多針對于list的接口,因此不再適用于treeviews
- 和QAbstractItemModel不同的是,ListModel為columnCount()提供了默認實現(xiàn)用來告知views列數(shù)為1
QAbstractProxyModel
構(gòu)造一個抽象的代理model,可以實現(xiàn)數(shù)據(jù)排序、篩選或其他數(shù)據(jù)處理的任務(wù)。
QAbstractTableModel
- 提供一個二維數(shù)據(jù)的抽象模型
- 因為他有了more specialized interface,所以不再適用于tree結(jié)構(gòu),但可以用于list中,不過更好的方法是使用QAbstractListModel
(結(jié))




