2010-08-31 75 views
1

这是我的使用案例(非常简化)。Qt4 Model/View - 在View中转换数据?

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

注:

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

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

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

回答

2

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

例如,如果你有一列有两个附加值,并且你想显示它们在两个单独的列,然后columnCount应该返回一个额外的,data应该找回原来的数据并返回只有一个部分基于在索引中的列,index必须进行修改,以检查此模式的新范围等

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