QML之DelegateModel和DelegateModelGroup

本文详细介绍了DelegateModel及其组件DelegateModelGroup的功能与使用方法。DelegateModel用于封装model和delegate,适用于QAbstractItemModel的子类,支持获取和操作modelIndex。DelegateModelGroup提供了访问和管理delegateitems的方法,包括排序和过滤等功能。
摘要由CSDN通过智能技术生成

文档上说:

DelegateModel用于封装model和delegate

使用情况:

  • 当model为QAbstractItemModel的子类,获取和操作modelIndex
  • 和Package一起使用,提供multiple views。
  • 和DelegateModelGroup一起使用,为delegate item 提供排序和过滤

DelegateModelGroup提供了访问DelegateModel的delegate items的方法,同时能够排序和过滤这些items

DelegateModel中的items初始条件下fangzaiDelegateModel::items这个组中(这个组一般直接反映DelegateModel::model中的数据)。items中的items可以被改变,方法是将DelegateModel::filterOnGroup设置为DelegateModel::groups中的一个。

DelegateModelGroup中的数据可以通过get方法得到,返回的object包含组成员和序号信息,以及model data。move方法可于排序,remove可用于过滤。setGroups和Package delegates用于将数据分类到不同的view中

insert方法可为model增加数据项,一般用在先提供模拟数据项或者占位数据项(然后当数据available时使用resolved添加为正真数据)



注意,VisualDataGroup和DelegateModelGroup是等价的(兼容)

            VisualDataModel和DelegateModel也是兼容的。


如何理解DelegateModel和DelegateModelGroup?

DelegateModel中有一个默认的DelegateModelGroup,名字为items。

用户可以通过DelegateModel::groups添加新的DelegateModelGroup

DelegateModel::model中所有的数据项必须属于其中一组(默认属于items组)

改变数据项所属组:

通过DelegateModelGroup::get()方法取出,然后设置item.groups为指定组名

或者使用DelegateModelGroup::setGroups将本组所有数据项转移到其他组

或者使用DelegateModelGroup::removeGroups将本组所有数据删除(应该和setGroups一样的效果)

组内数据项发生变动时,可通过onChange进行捕获

delegate显示的内容:

默认显示的内容是name为items的DelegateModelGroup的数据

可通过设置filterOnGroup,改变当前delegate显示内容

结合Package使用:

定义Package,将其中的控件使用Package.name进行命名,从而实现分组。

最后通过指定 delegatemodelid.part.xxx到model,实现显示一部分数据。

参考:Package


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值