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

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

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

注意事项:

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

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

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

【问题讨论】:

    标签: qt qt4 viewmodel qtableview


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多