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)