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

问题描述:

我有一个QAbstractTableModel子类,它实现了data(),一些列是整数和双精度。我正在使用QLocale :: toCurrencyString()和QLocale :: toString()来基于语言环境转换这些数字以添加格式化字符,如'$'和','。由于结果是一个字符串,现在这些列以字符串形式对值进行排序,而不是整型或双重形式。在QAbstractTableModel中对货币格式化的数字进行排序

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

+0

你尝试重写你的模型'QSortFilterProxyModel ::每种不超过()'功能来支持货币之间的自定义比较? – vahancho

+0

我没有。这涉及到将货币格式化的字符串转换成双打,然后比较它们? – Alex

+0

是的,我想应该这样做。 – vahancho

你应该让你的QAbstractTableModel执行返回的Qt :: DisplayRole一个字符串,Qt的:: EditRole生双。

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

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

+0

工作,谢谢! – Alex