Qt4 模型/视图 - 在视图中转换数据?

Posted

技术标签:

【中文标题】Qt4 模型/视图 - 在视图中转换数据?【英文标题】:Qt4 Model/View - Transforming data in View? 【发布时间】:2010-08-31 17:02:21 【问题描述】:

这是我的用例(非常简化)。

我在 QSQLTableModel 中有一些来自 DB 的数据,我需要对其进行转换:将几个字段合并为一个(并显示为这样)或将一个字段拆分为几个。 在模型/视图中应该如何以及在何处完成?

注意事项:

我尝试使用 AbstractProxyModel 来执行此操作,但我猜它仅适用于过滤或排序。我可以分配新数据并返回 QModelIndex(它携带指向数据的指针)但是稍后应该释放哪个对象?

修改 View 对象也无济于事,因为它单独处理每个表格单元格。

请注意,我不能以任何方式更改数据库。 如何在 Qt 中做到这一点?我已经花了整整两天的时间才遇到一堵墙。

【问题讨论】:

【参考方案1】:

使用QAbstractProxyModel 并不是错误的方法,您可以使用它来映射任何类型的源模型以重构数据。但这将是很多工作,你必须重新实现几个方法,包括columnCountdataflagsindex等等。实际上,您必须确保此模型的索引映射到源模型的正确数据。此外,如果您有一个动态模型,那么您将需要处理来自源模型的信号,修改这些值并重新发出它们。如果您希望视图也可以编辑数据,那么您必须重新实现setData 等。

例如,如果您有一列附加了两个值,并且您希望将它们显示在两个单独的列中,那么columnCount 应该返回一个额外的值,data 应该检索原始数据并只返回一个部分根据索引中的列,必须修改index 以检查此模型的新边界等。

如果您需要更具体的帮助,请发布一些示例代码。

【讨论】:

以上是关于Qt4 模型/视图 - 在视图中转换数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个不同的ListAPIView转换为单个ModelViewSet

MVC - 两个模型绑定到同一视图的转换问题

两个视图之间的swiftui转换

我应该如何将 OpenGL 模型视图转换为 CATransform3D?

为什么使用模型视图矩阵的反转置转换法线?

CKEditor5视图模型位置和范围转换