按数字对 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列表小部件