使用 sortItems() 对 QListWidget 进行排序

问题描述 投票:0回答:2

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

更改此:

A z d C 乙 哦 我

对此:

A C 我 d e 哦 z

但我希望它是:

A C d e 我 哦 z

有什么方法可以改变它这样排序吗?

qt sorting qlistwidget
2个回答
12
投票

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

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


-1
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.