Qt代理模型

在模型/视图框架中,单个模型提供的数据项可以由多个视图共享,并且每个视图可能以完全不同的方式表示相同的信息。自定义视图和委托是提供相同数据完全不同的表示形式的有效方法。但是,应用程序通常需要在相同数据的处理版本上提供常规视图,例如在项列表中对不同排序的视图。

尽管将排序和筛选操作作为视图的内部功能似乎合适,但此方法不允许多个视图共享此类潜在成本高昂的操作的结果。另一种方法(涉及在模型本身中排序)会导致类似的问题,即每个视图必须显示根据最近的处理操作组织的数据项。

为了解决这个问题,模型/视图框架使用代理模型来管理各个模型和视图之间提供的信息。从视图的角度来看,代理模型的行为类似于普通模型,并代表该视图从源模型访问数据。模型/视图框架使用的信号和槽确保了每个视图都得到了适当的更新,无论在它自己和源模型之间放置了多少代理模型。

使用代理模型

代理模型可以插入到现有模型和任意数量的视图之间。Qt提供了一个标准的代理模型QSortFilterProxyModel,它通常被实例化并直接使用,但也可以子类化以提供自定义的过滤和排序行为。QSortFilterProxyModel类可以以以下方式使用:

 	QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(parent)<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值