1

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

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

笔记:

我尝试使用 AbstractProxyModel 来做到这一点,但我想,它只适用于过滤或排序。我可以分配新数据并返回 QModelIndex (它携带指向数据的指针)但是以后应该释放哪个对象?

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

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

4

1 回答 1

2

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

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

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

于 2010-09-02T07:06:46.560 回答