在QListWidget上使用sortItems()时遇到问题。以下是发生的事情:
更改此内容:
一个 ž d C Ë Ø 我
到此:
一个 C 一世 d Ë Ø ž
但我希望它是:
一个 C d Ë 一世 Ø ž
有什么方法可以让它变得像那样吗?
答案 0 :(得分:9)
QListWidget使用DisplayRole(项目的文本)进行排序和调用 QString :: localeAwareCompare就可以了。要覆盖默认值,您可以更改使用的语言环境(请参阅QLocale)或让您自己的QListWidgetItem子类重新实现QListWidgetItem::operator<并让它进行您想要的比较。
对于更高级的内容,我建议您查看QListView,您可以将其与自己的模型实施或便捷模型QStandardItemModel或QStringListModel结合使用(后者可能是您案例中最简单,最优雅的解决方案)。对于排序,您可以在实际模型和视图之间放置QSortFilterProxyModel。