[PySide] problem with custom sorting in QSortFilterProxyModel
Frank Rueter | OHUfx
frank at ohufx.com
Wed Jun 27 06:45:02 CEST 2012
just for future reference (if people have the same problem), the
solution was to simply call self.invalidate() right before calling
self.sort() in the proxy model.
On 26/06/12 7:32 PM, Frank Rueter | OHUfx wrote:
> Hi all,
> I'm trying to implement a custom sort behaviour on my first model/view
> structure and am hitting a road block (undoubtedly human error).
> My model is just a list of dictionaries all living in column 0 of
> their respective rows. I am not splitting up the dictionaries' keys
> into their own columns as I need to draw each one as a single custom
> widget/delegate eventually (maybe this is possible anyway??).
> The sorting code in my proxy model code like like this:
> def sortBy( self, attr ):
> self.__sortBy = attr
> self.sort( 0, Qt.AscendingOrder ) # THIS DOES NOT GET CALLED
> WHEN THE COMBO BOX CHANGES A SECOND TIME
> def lessThan( self, left, right ):
> '''Custom sorting behaviour'''
> leftTool = ( self.sourceModel().itemFromIndex( left ) )
> rightTool = ( self.sourceModel().itemFromIndex( right ) )
> leftData = leftTool.data()[ self.__sortBy ]
> rightData = rightTool.data()[ self.__sortBy ]
> return leftData < rightData
> As the comment in the code says, the first time I call sort() it works
> fine, but subsequent calls do nothing. It's like nothing exists in
> column 0 anymore after things were sorted once?!
> I'm sure I'm missing something very obvious here.
> Here is the entire test code:
> I'm not sure if I'm even going about this in the right way so any help
> would be greatly appreciated as usual.
> PySide mailing list
> PySide at qt-project.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the PySide