按数字对 QListWidget 进行排序

Posted

技术标签:

【中文标题】按数字对 QListWidget 进行排序【英文标题】:Sorting a QListWidget by numbers 【发布时间】:2018-05-17 08:49:00 【问题描述】:

我有一个QListWidget,里面有这些物品:

1
10
100
11
110
111
12

我想按数字对列表中的项目进行排序:

1
10
11
12
100
110
111

有什么想法吗?

【问题讨论】:

【参考方案1】:

默认情况下QListWidget 将根据文本对元素进行排序,如果您想根据与文本关联的数值进行排序,则必须创建自定义QListWidgetItem 并覆盖方法@987654323 @:

import sys

from PyQt4.QtGui import QApplication, QListWidget, QListWidgetItem
from PyQt4.QtCore import Qt

class ListWidgetItem(QListWidgetItem):
    def __lt__(self, other):
        try:
            return float(self.text()) < float(other.text())
        except Exception:
            return QListWidgetItem.__lt__(self, other)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QListWidget()
    for i in [1, 10, 100, 11, 110, 111, 12]:
        w.addItem(ListWidgetItem(str(i)))
    w.sortItems()
    w.show()
    sys.exit(app.exec_())

【讨论】:

以上是关于按数字对 QListWidget 进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Qt入门系列开发教程高级控件篇QListWidget列表小部件

首先按字母顺序对对象数组进行排序,然后按数字排序

按字母数字对javascript数组进行排序[重复]

按数字(最高优先)然后按字母(字母顺序)对对象集合进行排序

用点、字母、数字对对象数组进行排序。我能够按数字排序,但混合值很困难。不确定是不是可以做对

如何按数字顺序对字符串和数字列表进行排序?