我在 QListWidget 上使用 sortItems() 时遇到问题。这是发生的事情:
更改此:
A z d C 乙 哦 我
对此:
A C 我 d e 哦 z
但我希望它是:
A C d e 我 哦 z
有什么方法可以改变它这样排序吗?
QListWidget 使用 DisplayRole(项目的文本)进行排序和调用 QString::localeAwareCompare 对它们进行比较。要覆盖默认值,您可以更改使用的区域设置(请参阅QLocale)或让您自己的 QListWidgetItem 子类重新实现 QListWidgetItem::operator< 并让它进行您想要的比较。
对于任何更高级的内容,我建议看看QListView,您可以将其与您自己的模型实现或便利模型QStandardItemModel或QStringListModel(后者可能是最简单和优雅的)结合起来您的情况的解决方案)。为了排序,您可以在实际模型和视图之间放置一个QSortFilterProxyModel。
def setModel(self):
krwCoins = pyupbit.get_tickers("KRW") #get data from server
for krwCoin in krwCoins:
self.listWidget_2.addItem(krwCoin) #addItem
self.listWidget_2.sortItems() #sortItems