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

时间:2010-08-31 17:02:21

标签: qt qt4 viewmodel qtableview

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

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

注意:

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

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

请注意,我无法以任何方式更改数据库。 在Qt中如何做到这一点?我已经整整花了两天时间才进入一个又一个的墙。

1 个答案:

答案 0 :(得分:2)

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

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

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