Qt4 模型/视图 - 在视图中转换数据?
Posted
技术标签:
【中文标题】Qt4 模型/视图 - 在视图中转换数据?【英文标题】:Qt4 Model/View - Transforming data in View? 【发布时间】:2010-08-31 17:02:21 【问题描述】:这是我的用例(非常简化)。
我在 QSQLTableModel 中有一些来自 DB 的数据,我需要对其进行转换:将几个字段合并为一个(并显示为这样)或将一个字段拆分为几个。 在模型/视图中应该如何以及在何处完成?
注意事项:
我尝试使用 AbstractProxyModel 来执行此操作,但我猜它仅适用于过滤或排序。我可以分配新数据并返回 QModelIndex(它携带指向数据的指针)但是稍后应该释放哪个对象?
修改 View 对象也无济于事,因为它单独处理每个表格单元格。
请注意,我不能以任何方式更改数据库。 如何在 Qt 中做到这一点?我已经花了整整两天的时间才遇到一堵墙。
【问题讨论】:
【参考方案1】:使用QAbstractProxyModel
并不是错误的方法,您可以使用它来映射任何类型的源模型以重构数据。但这将是很多工作,你必须重新实现几个方法,包括columnCount
、data
、flags
、index
等等。实际上,您必须确保此模型的索引映射到源模型的正确数据。此外,如果您有一个动态模型,那么您将需要处理来自源模型的信号,修改这些值并重新发出它们。如果您希望视图也可以编辑数据,那么您必须重新实现setData
等。
例如,如果您有一列附加了两个值,并且您希望将它们显示在两个单独的列中,那么columnCount
应该返回一个额外的值,data
应该检索原始数据并只返回一个部分根据索引中的列,必须修改index
以检查此模型的新边界等。
如果您需要更具体的帮助,请发布一些示例代码。
【讨论】:
以上是关于Qt4 模型/视图 - 在视图中转换数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个不同的ListAPIView转换为单个ModelViewSet