2

我有一个实现 data() 的 QAbstractTableModel 子类,其中一些列是整数和双精度。我正在使用 QLocale::toCurrencyString() 和 QLocale::toString() 根据语言环境转换这些数字,以添加诸如“$”和“,”之类的格式字符。由于结果是字符串,因此列现在以字符串形式而不是 int 或 double 形式对值进行排序。

我正在使用 QSortFilterProxyModel 根据列进行排序。但它只是以字符串形式获取数据,并以此为基础进行排序。也许我不应该在 data() 中格式化整数和双精度数?我找不到其他地方来格式化这些值。有谁知道如何解决这个问题?

4

1 回答 1

2

您应该让您的 QAbstractTableModel 实现为 Qt::DisplayRole 返回一个字符串,并为 Qt::EditRole 返回一个原始双精度。

然后调用setSortRole(Qt::EditRole)QSortFilterProxyModel。

这可能不是最简单的方法,但我相信它最符合 Qt 的设计理念。

于 2013-11-21T16:41:25.103 回答