Python 如何对视图项进行排序

Python 如何对视图项进行排序,python,qt,model,header,pyqt,Python,Qt,Model,Header,Pyqt,将setSortingEnabled()设置为True可以单击列标题名称对视图的项目进行排序: tableView=QTableView() tableView.setSortingEnabled(True) 但是,即使设置了属性,视图也会显示未排序的项目。 为了对项目进行排序,必须单击标题。 问题:如何使视图继续进行并在单击标题之前对其项进行排序。 因此,视图从一开始就被直接排序 您可以使用 例如,这意味着调用tableView.horizontalHeader().setSortIndi

setSortingEnabled()
设置为
True
可以单击列标题名称对视图的项目进行排序:

tableView=QTableView()
tableView.setSortingEnabled(True) 
但是,即使设置了属性,视图也会显示未排序的项目。 为了对项目进行排序,必须单击标题。 问题:如何使视图继续进行并在单击标题之前对其项进行排序。 因此,视图从一开始就被直接排序

您可以使用

例如,这意味着调用
tableView.horizontalHeader().setSortIndicator(0,Qt.AscendingOrder)
以升序对第一列进行排序

请注意,您正在传入
logicalIndex
,如果列已重新排序,则可能与visualIndex不对应
QHeaderView
提供了在需要时在两者之间进行转换的方法(但我认为您不太可能需要它)。

要排序
QTableView()
而不单击其标题(假设设置了
tableView.setSortingEnabled(True)
),请使用:


谢谢你的链接!单击头时可能会调用一个方法。如果是这样的话,这个方法可以被编程调用吗?看起来我们可以通过调用
headerObj=tableView.horizontalHeader()
来获得QTableView头对象,根据docs headerObj的
.sortinicatorchanged()
方法,这个方法很接近我们想要的。可以通过编程方式触发它吗?虽然我可以通过以下方式将标题链接到任何方法:
self.connect(taskViewHeader,SIGNAL('sortIndicatorChanged(int,Qt::SortOrder)”),self.sortChanged)
但我无法通过编程方式发出
'sortIndicatorChanged
信号……太棒了!谢谢现在我们有两种方法来做同样的事情@Sputnix是的,我不知道您回答的特定于tableview的方法。我的答案中的方法应该适用于所有类型的视图(如树状视图),但适当地将
view.horizontalHeader()
更改为
view.header()
tableView.sortByColumn(0, Qt.AscendingOrder)