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