我有一个实现 data() 的 QAbstractTableModel 子类,其中一些列是整数和 double 。我正在使用 QLocale::toCurrencyString() 和 QLocale::toString() 根据区域设置转换这些数字,以添加格式字符,例如“$”和“,”。由于结果是字符串,因此列现在以字符串形式而不是 int 或 double 形式对值进行排序。
我正在使用 QSortFilterProxyModel 根据列进行排序。但它只是获取字符串形式的数据,并基于此进行排序。也许我不应该在 data() 中格式化整数和 double ?我找不到另一个地方来格式化这些值。有谁知道如何解决这个问题吗?
最佳答案
您应该让 QAbstractTableModel 实现返回 Qt::DisplayRole 的字符串,以及 Qt::EditRole 的原始 double 值。
然后在 QSortFilterProxyModel 上调用 setSortRole(Qt::EditRole)
。
这可能不是最简单的方法,但我相信它最符合 Qt 的设计理念。
关于qt - 在 QAbstractTableModel 中对货币格式的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126606/