Qt Model/View结构学习导图

本文详细介绍了Qt的Model/View体系,包括QAbstractItemView、QAbstractItemModel、QAbstractItemDelegate等核心类的作用和关系。QAbstractItemView作为视图,从模型中获取数据;QAbstractItemModel提供数据接口,通知视图数据变化;QAbstractItemDelegate则负责数据的呈现和编辑。通过重写相关接口,可以实现数据和视图的定制化。

Qt的MV模型,源于但又不同于MVC,其使用的MVD。Model和View的含义未发生变化,通过Delegate(委托或称为代理)来自定义每个条目的显示和编辑方式。

下面是我总结的Qt的MV结构的类间关系图。Qt的MV结构就是这样实现的,我们通过继承重写这些接口类,就可以很方便地将项目中的数据和视图分离。
在这里插入图片描述

MODEL/VIEW

  1. QAbstractItemView
    视图从模型中获取模型索引,用其来表示数据项。用户与显示的项目交互时,视图发出信号来提供交互信息。含有槽dataChanged()。
    1.1 QColumnView
    1.2 QHeaderView
    1.3 QListView
    1.3.1 QListWidget
    1.4 QTableView
    1.4.1 QTableWidget
    1.5 QTreeView
    1.5.1 QTreeWidget
  2. QAbstractItemModel
    提供标准接口供视图和委托访问其内部数据源。其子类会以层次化结构来表示数据,这个结构中包含了数据项表。模型中数据改变会通过信号槽机制通知视图。 注意,这是个接口类,其纯虚函数有:index(), parent(), rowCount(), columnCount(), data()。数据改变将发送dataChanged()信号
    2.1 QStandardItemModel
    2.1.1 QStandardItem
    2.2 QAbstractListModel
    如需定制,所需的数据结构可以表示为项目列表时,可以子类化该类。注意,这是个接口类,其剩下的纯虚函数还有:rowCount(), data(),需要重写。
    1> 重写rowCount(), data()可以实现只读模型
    2&
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值