美文网首页程序员
QT Model 继承关系

QT Model 继承关系

作者: JasonGao | 来源:发表于2014-08-19 19:23 被阅读840次

    QObject
      |
    QAbstractItemModel — — — — — — — — — — — — — —
      |             |           |
    QAbstractListModel   QAbstractProxyModel  QAbstractTableModel
      |             |                  
    QStringListModel    QIdentityProxyModel        
                QSortFilterProxyModel


    QAbstractItemModel


    1. 为ITEM-MODEL提供抽象接口,需要继承实现,不能直接实例化

    2. 每一项都可以通过index访问到 index()


      3.jpg
    3. 每一项都捆绑了很多数据元素,可是使用data(),并指定一个角色来提取出该项对应角色的数据元素。或者使用itemData()来一次获取所有所有角色的数据

      1.jpg
      2.jpg
    4. 每个role的数据使用一个特定的Qt::ItemDataRole来设置

    5. 对于某一个单独的role的数据设置使用 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()提供了默认实现用来告知views列数为1

    QAbstractProxyModel


    构造一个抽象的代理model,可以实现数据排序、筛选或其他数据处理的任务。

    QAbstractTableModel


    1. 提供一个二维数据的抽象模型
    2. 因为他有了more specialized interface,所以不再适用于tree结构,但可以用于list中,不过更好的方法是使用QAbstractListModel

    (结)

    相关文章

      网友评论

        本文标题:QT Model 继承关系

        本文链接:https://www.haomeiwen.com/subject/jagetttx.html