如何在Qt的模型/视图框架中添加数字格式?

时间:2012-03-27 23:51:07

标签: qt view number-formatting

假设我有一个带有相应型号的QTableView。此视图仅显示数字,我希望不同列的数字格式不同。

一些例子:

  • 在价格列中,我想要两位小数,逗号作为分隔符。
  • 在长度列中,我不想要任何小数,但我仍然想要 逗号分隔符。
  • 在持续时间列中,我想要与价格列相同的格式 如果值为负,则为红色。

现在我可以在模型的数据函数中执行此操作。 Qt.DisplayRole处理数字格式,Qt.ForegroundRole可以处理着色。虽然着色按预期工作,但以这种方式进行数字格式化会破坏排序。

有没有办法更直接地实现这一目标?我试着用Google搜索,看看我能找到什么,但很好的例子说明了我的目标。

1 个答案:

答案 0 :(得分:3)

如果您使用QStandardItemModel作为模型,则可以将sortRole设置为使用Qt::EditRole而不是Qt::DisplayRole

如果您使用QAbstractItemModel之类的内容,则可以覆盖sort方法并执行类似操作,即使用Qt::EditRole值。您还可以在模型周围包裹QSortFilterProxyModel并覆盖lessThan方法。