我在 QListWidget 上使用 sortItems() 时遇到问题。发生的情况如下:
改变这个:
A
z
d
C
乙
哦
我
to this:
A
C
我
d
e
哦
z
但我希望它是:
A
C
d
e
我
哦
z
有什么办法可以改变让它变得像这样吗?
QListWidget使用DisplayRole(项目的文本)进行排序和调用
QString::localeAwareCompare 对它们进行比较。要覆盖默认值,您可以更改使用的区域设置(请参阅QLocale http://doc.qt.io/qt-5/qlocale.html)或者有你自己的 QListWidgetItem 子类重新实现QListWidgetItem::运算符并让它进行您想要的比较。 http://doc.qt.io/qt-5/qlistwidgetitem.html#operator-lt
对于更高级的内容,我建议看看QListView http://doc.qt.io/qt-5/qlistview.html,您可以将其与您自己的模型实现或便利模型结合起来Q标准项目模型 http://doc.qt.io/qt-5/qstandarditemmodel.html or QStringList模型 http://doc.qt.io/qt-5/qstringlistmodel.html(后者可能是您的情况下最简单和优雅的解决方案)。为了排序,您可以放置一个QSortFilterProxy模型 http://doc.qt.io/qt-5/qsortfilterproxymodel.html位于实际模型和视图之间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)