Qt Model/View初览

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?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值