QT Model 繼承關(guān)系

QObject
  |
QAbstractItemModel — — — — — — — — — — — — — —
  |            ?。          。?br> QAbstractListModel   QAbstractProxyModel  QAbstractTableModel
 ?。            。                 ?br> QStringListModel    QIdentityProxyModel        
            QSortFilterProxyModel


QAbstractItemModel


  1. 為ITEM-MODEL提供抽象接口,需要繼承實現(xiàn),不能直接實例化

  2. 每一項都可以通過index訪問到 index()


    3.jpg
  3. 每一項都捆綁了很多數(shù)據(jù)元素,可是使用data(),并指定一個角色來提取出該項對應(yīng)角色的數(shù)據(jù)元素?;蛘呤褂胕temData()來一次獲取所有所有角色的數(shù)據(jù)

    1.jpg

    2.jpg

  4. 每個role的數(shù)據(jù)使用一個特定的Qt::ItemDataRole來設(shè)置

  5. 對于某一個單獨的role的數(shù)據(jù)設(shè)置使用 setData(), setItemData()


    1.jpg
  6. 項可以通過flags()查詢,查看他們是否能被選擇、拖拽或以其他方式操作


    2.jpg
  7. 如果一個項含有子項,hasChildren()返回true

  8. model中的每一個層級都有 rowCount() 和 a columnCount() ,行列的插入刪除使用: insertRows(), insertColumns(), removeRows(), and removeColumns()

  9. 子類化: QT中討論子類化model的一篇文章《Model Subclassing Reference》

QAbstractListModel


  1. 提供一維列表抽象模型(non-hierarchical)
  2. 這個類提供了比 QAbstractItemModel更多針對于list的接口,因此不再適用于treeviews
  3. 和QAbstractItemModel不同的是,ListModel為columnCount()提供了默認實現(xiàn)用來告知views列數(shù)為1

QAbstractProxyModel


構(gòu)造一個抽象的代理model,可以實現(xiàn)數(shù)據(jù)排序、篩選或其他數(shù)據(jù)處理的任務(wù)。

QAbstractTableModel


  1. 提供一個二維數(shù)據(jù)的抽象模型
  2. 因為他有了more specialized interface,所以不再適用于tree結(jié)構(gòu),但可以用于list中,不過更好的方法是使用QAbstractListModel

(結(jié))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容