Python QSortFilterProxyModel在不需要时进行排序
我将QSortFilerProxyModel与我的QTableView一起使用,并通过以下方式对其进行初始化:Python QSortFilterProxyModel在不需要时进行排序,python,sorting,model,pyqt,Python,Sorting,Model,Pyqt,我将QSortFilerProxyModel与我的QTableView一起使用,并通过以下方式对其进行初始化: self.proxy = QtGui.QSortFilterProxyModel() self.proxy.setSourceModel(self.model) self.proxy.setDynamicSortFilter(True) 我的QTableView使用一个模型,其中包含一些字段,如journal、title和new。当我单击一行时,如果“new”为True,我修改模型,
self.proxy = QtGui.QSortFilterProxyModel()
self.proxy.setSourceModel(self.model)
self.proxy.setDynamicSortFilter(True)
我的QTableView使用一个模型,其中包含一些字段,如journal、title和new。当我单击一行时,如果“new”为True,我修改模型,并将new设置为False
我的问题是当我用字段“journal”对行进行排序时。有些行具有相同的日志,如果我单击“新建”行(这会触发模型更改),代理将以不同的方式对行进行排序,而我没有要求这样做
只有在修改模型时,才会出现这种行为。因此,我需要一种方法来避免在模型更新之后更新QSortFilterProxyModel。我的模型是QSqlTableModel
可能吗
编辑:实际上,我的代理在每次模型更新后都会进行排序,每次它比较具有相同值的单元格时,都会以不同的排序顺序结束。这不是预期的行为。我终于自己找到了答案 实际上,通过单击标题对我的行进行排序会破坏代理。因此,我将代理子类化:
from PyQt4 import QtGui
class ProxyPerso(QtGui.QSortFilterProxyModel):
def __init__(self, parent):
super(ProxyPerso, self).__init__(parent)
self.parent = parent
def sort(self, column, order):
super(ProxyPerso, self).sort(column, order)
self.parent.proxy.setSourceModel(self.parent.modele)
self.parent.tableau.setModel(self.parent.proxy)
现在它工作得很好