QTreeWidget
是 Qt 框架中的一个类,用于显示树形结构的数据。要对 QTreeWidget
的列进行排序,可以通过设置列的排序标志并调用排序函数来实现。
QTreeWidget
的 setSortingEnabled(true)
来允许列标题点击排序。Qt::SortOrder
。sortByColumn(column, order)
方法手动进行排序。以下是一个简单的例子,展示如何在 PyQt5 中对 QTreeWidget
的列进行排序:
from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
from PyQt5.QtCore import Qt
app = QApplication([])
# 创建 QTreeWidget 实例
tree = QTreeWidget()
tree.setHeaderLabels(['Name', 'Age'])
# 添加数据
item1 = QTreeWidgetItem(["Alice", "30"])
item2 = QTreeWidgetItem(["Bob", "25"])
item3 = QTreeWidgetItem(["Charlie", "35"])
tree.addTopLevelItem(item1)
tree.addTopLevelItem(item2)
tree.addTopLevelItem(item3)
# 启用排序功能
tree.setSortingEnabled(True)
# 手动按第二列(年龄)降序排序
tree.sortByColumn(1, Qt.DescendingOrder)
tree.show()
app.exec_()
如果需要自定义排序规则,可以重写 QTreeWidgetItem
的比较操作符:
class MyTreeWidgetItem(QTreeWidgetItem):
def __lt__(self, other):
column = self.treeWidget().sortColumn()
if column == 1: # 假设第二列是年龄,需要特殊处理
return int(self.text(column)) > int(other.text(column))
return super().__lt__(other)
然后在创建 QTreeWidgetItem
实例时使用这个自定义类。
通过以上步骤和方法,可以有效地对 QTreeWidget
的列进行排序,满足不同的应用需求。
领取专属 10元无门槛券
手把手带您无忧上云