qt - 在 QAbstractTableModel 中对货币格式的数字进行排序

标签 qt sorting qabstracttablemodel qsortfilterproxymodel

我有一个实现 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/

相关文章:

c++ - 改变QGroupBox的内容背景

ruby - 在 ruby​​ 中按时间查找最近的记录

c - 使用qsort对结构进行排序(按 "last name"字段排序)

qt - QTableView中单元格内容居中对齐

c++ - 编译器错误 : "Non-aggregates cannot be initialized with initializer list."

Python/PyQt4 : How to make a QComboBox Item draggable

qml - 为什么使用 QAbstractTableModel 而不是 QAbstractListModel?

qt - 编辑 QTableView 单元格时设置初始文本

c++ - Qt c++ QSystemTrayIcon 不在托盘上,Windows 7

ios - 如何对 TitleForHeaderInSection 上的日期进行排序