Qt Model/View初览

Model负责数据的管理和操作,提供与View交互的接口,而View则显示UI上的数据,不存储数据。每个Item通过Index在Model中被表示,用于增删改查。在复杂模型如树形结构中,Index还需体现层级关系。QModelIndex用于表示Item的位置,提供只读访问,修改数据需通过Model。

Model和View之谈:

①View是显示在UI界面上,实实在在与用户交互数据的组件,它本身不存储数据,而是通过与Model连接来对数据进行操作

②Model是作为view和底层数据之间的桥梁,它为数据提供了多种操作,相比于Row Data能更好管理

Model中存储数据的基本单元是一个Item,为了使数据与操作隔离,对于Item的访问要使用Index

由于Model的底层结构(虽然实现不是)是多维表,所以每个Item的Index都通过行列号与父项来获取

Model还提供了role属性,Item中包含多个数据,每个数据都有其对应的role,如UserRole对应用户自定义数据,DisplayRole对应组件显示的文本等等

QModelIndex

在model中,(为了分离式?)每个item都用index来表示,可以视作index=item,增删改查都通过index来进行,而不使用一个具体的类来表示item

在一般情况下(list和table中),一个index就相当于行号加列号所表示的item

但若是使用复杂的model如树形model,就需要显示各个item之间的层级关系,此时需要加上父item来表示一个index

QModelIndex indexA = model->index(0, 0, QModelIndex());//使用空index作为parent的就是顶层item
QModelIndex indexB = model->index(0, 0, indexA);//使用其他item作为parent的就是下层item

常用方法

仅提供了只读功能,要作修改还是要通过model来进行
index.column/row();//index所在的行/列
index.data();//返回index中的对应的role的data
index.model();//返回index所属的model,在处理多model时很有用
index.parent/sibling();//返回index的parent或同级item
//注意此处调用的是与item关联的model的parent函数来获取的

current item?selection的setModel?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值