【发布时间】:2021-12-22 13:51:00
【问题描述】:
我有一个QAbstractListModel,其中存储了一堆自定义对象,您可以通过指定角色来访问模型中自定义对象的不同字段(如果这是对 Qt 角色的不当使用,请告诉我知道,因为我一定很困惑)。我想以用户友好的QTableView 显示这些数据。我可以使用代理模型显示内容,但问题是我不想显示原始值,我想显示从原始数据派生的特定数据。例如,我不想要ItemA.foo 和ItemA.bar 的列,我只想在一个列中显示ItemA.foo - ItemA.bar。除此之外,我希望您在模型中获得自动更新功能,如果 ItemA.foo 或 ItemA.bar 发生变化,我希望差异列自动更新和重新计算。
我认为这样做的方法是使用某种表代理模型来侦听源模型,然后使用从源模型派生的值填充自己的字段并侦听 dataChanged() 信号从源模型。然后将此代理模型插入QTableView。但对我来说,这听起来像是应该在视图中完成的事情。或者这是代表应该做的事情?我什至可以在基本模型本身中进行这些计算,并添加特定于应该在表中显示的这些值的角色,但这听起来像是我真的超载了模型的职责。
TLDR:您如何处理来自QTableView 中模型的数据?我是否应该在基本模型中进行数据操作,然后将其发送到QTableView?我是否应该使用代理模型来处理基础数据并将其发送到QTableView?还是我完全误解了什么?
【问题讨论】: