3

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

改变这个:

A z d C E o I

对此:

A C I d e o z

但我希望它是:

A C d e I o z

有什么办法可以改变使它像那样排序?

4

1 回答 1

11

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

对于更高级的东西,我建议看一下QListView,您可以将其与您自己的模型实现或便利模型QStandardItemModelQStringListModel结合使用(后者可能是您的情况下最简单和最优雅的解决方案)。对于排序,您可以在实际模型和视图之间放置一个QSortFilterProxyModel

于 2011-12-13T18:21:14.820 回答