使用sortItems()对QListWidget进行排序

时间:2011-12-13 17:42:52

标签: qt sorting qlistwidget

在QListWidget上使用sortItems()时遇到问题。以下是发生的事情:

更改此内容:

一个 ž d C Ë Ø 我

到此:

一个 C 一世 d Ë Ø ž

但我希望它是:

一个 C d Ë 一世 Ø ž

有什么方法可以让它变得像那样吗?

1 个答案:

答案 0 :(得分:9)

QListWidget使用DisplayRole(项目的文本)进行排序和调用 QString :: localeAwareCompare就可以了。要覆盖默认值,您可以更改使用的语言环境(请参阅QLocale)或让您自己的QListWidgetItem子类重新实现QListWidgetItem::operator<并让它进行您想要的比较。

对于更高级的内容,我建议您查看QListView,您可以将其与自己的模型实施或便捷模型QStandardItemModelQStringListModel结合使用(后者可能是您案例中最简单,最优雅的解决方案)。对于排序,您可以在实际模型和视图之间放置QSortFilterProxyModel