2010-08-31 76 views
1

這是我的使用案例(非常簡化)。Qt4 Model/View - 在View中轉換數據?

我在QSQLTableModel中有一些來自數據庫的數據,我需要對其進行轉換:將幾個字段合併爲一個(並顯示爲這樣)或將一個字段拆分爲幾個。 模型/視圖應該如何以及在哪裏完成?

注:

我試着用AbstractProxyModel要做到這一點,但我想,它僅適用於過濾或排序是合適的。我可以分配新數據並返回QModelIndex(它攜帶指向數據的指針),但是哪個對象稍後應該釋放數據?

修改View對象也無濟於事,因爲它會分別處理每個表格單元格。

請注意,我無法以任何方式更改數據庫。 如何在Qt中做到這一點?我已經花了整整兩天的時間纔在一個接一個的牆上跑。

回答

2

使用QAbstractProxyModel不是錯誤的方法,您可以使用它來映射任何類型的源模型以重構數據。但這將是很多工作,你必須重新實施幾種方法,包括columnCount,data,flags,index等等。實際上,您必須確保此模型的索引映射到源模型的正確數據。另外,如果您有一個動態模型,那麼您將需要處理來自源模型的信號,修改這些值並重新發射它們。如果你想要視圖編輯數據,那麼你將不得不重新實現setData等。

例如,如果你有一列有兩個附加值,並且你想顯示它們在兩個單獨的列,然後columnCount應該返回一個額外的,data應該找回原來的數據並返回只有一個部分基於在索引中的列,index必須進行修改,以檢查此模式的新範圍等

如果你需要更具體的幫助,然後請發佈一些示例代碼。