Qt代理模型
发布时间
阅读量:
阅读量
在模型/视图框架中,单个模型提供的数据项能够通过多个视图实现共享,并且每个视图可能通过完全不同的方式呈现相同的信息。自定义视图与委托是实现相同数据两种不同表现形式的有效手段。然而,在处理相同数据时,应用程序通常需要提供常规视图作为处理版本,如在项列表中展示不同排序的视图。
然而,在将排序与筛选操作归为视图的内建功能这一设想下(听起来合理),却存在一个潜在问题:这种方法阻止多个视图共享这类潜在昂贵的操作所带来的结果。另一个方案(通过将排序嵌入模型本身)也会遇到同样的挑战:也就是说,在这种情况下,每个视图都需要展示按照最近处理结果排列的数据条目。
为了解决该问题, 本系统采用代理机制来管理各组件之间的数据传输. 从系统的角度出发, 代理模块的功能上等同于常规模块, 并负责将来自子系统的更新指令传递至主系统进行处理. 系统内的信号与槽接口确保了各组件能够及时同步更新, 不论它们之间是否存在中间层代理机制.
使用代理模型
代理模型能够嵌入现有模型以及可选数量的视图。Qt提供了标准代理模型QSortFilterProxyModel,默认情况下会被创建并直接应用;然而,在某些特定需求下,则可以通过继承并定制特定的过滤和排序逻辑。QSortFilterProxyModel类的使用方法包括:创建实例时需要指定索引数据类型、过滤函数以及排序策略的相关参数设置;如果继承自该基类,则必须
全部评论 (0)
还没有任何评论哟~
