2012-03-27 40 views
2

比方說,我有一個QTableView與相應的模型。此視圖僅顯示數字,我希望不同列的數字格式不同。如何在Qt的模型/視圖框架中添加數字格式?

一些例子:我

  • 在價格欄希望兩位小數,並用逗號作爲分隔符。
  • 在長度列中我不想要任何小數,但我仍然希望使用 逗號分隔符。
  • 在持續時間列中,我需要與價格列相同的格式,但如果值爲負值,則爲 紅色。

現在我可以在模型的數據函數中做到這一點。 Qt.DisplayRole處理數字格式,並且Qt.ForegroundRole可以處理着色。雖然着色按預期工作,但以這種方式進行數字格式化會破壞排序。

有沒有更直接的方法來實現這一目標?我試着用Google搜索一下,看看我能找到什麼,但是我之後所做的一些很好的例子都沒有回答。

回答

3

如果您使用QStandardItemModel作爲您的型號,則可以將sortRole設置爲使用Qt::EditRole而不是Qt::DisplayRole

如果您使用類似QAbstractItemModel的東西,則可以覆蓋sort方法並執行類似操作,即使用Qt::EditRole值。您也可以圍繞您的模型打包QSortFilterProxyModel,並覆蓋lessThan方法。

+0

以前從未見過'sortRole'角色。這看起來像贏家。謝謝。 – c00kiemonster 2012-03-28 13:01:44

相關問題