[PySide] QSelectionModel.currentChanged/selectedChanged signals give troubles

S. Champailler schampailler at skynet.be
Thu Jan 16 13:35:47 CET 2014


When you get the selection model you have to take ownership of it. Therefore you
do have to keep a reference to it in your own code. Qt's doc gives some
information about it...

Now I remember that there was a bug with that, where the ownership was not
correctly passed to the caller. This bug came and go and came again. Right now,
I've redefined QTableView like this :

from PySide.QtGui import QTableView

class QTableView(QTableView):
    def __init__(self,parent=None):
        super(QTableView,self).__init__(parent)
        self._selection_model = None

    def setModel(self,model):
        super(QTableView,self).setModel(model)
        self._selection_model = super(QTableView,self).selectionModel()

    def selectionModel(self):
        return self._selection_model


and so far it has worked perfectly (I have an application in production since 2
months, used 8 hours a day by 4-5 persons that makes extensive use of selection
models)

Stefan



> Le 16 janvier 2014 à 12:53, Andy Kittner <andy.kittner at gmail.com> a écrit :
>
>
> On 16.01.2014 11:50, Alexey Vihorev wrote:
> > Hi!
> >
> > I’ve got a problem trying to connect currentChanged/selectedChanged signals
> > to anything. The code:
> I vaguely remember having a similar problem once (it's ages ago so
> things might have changed).
> After some debugging I found that the object providing the slot was garbage
> collected before the connection was made resulting in the crash.
>
>
> Can you try changing this
>
> >         self.view.selectionModel().currentChanged.connect(self.handler)
>
> To the following:
>
>           selection_model = self.view.selectionModel()
>           selection_model.currentChanged.connect(self.handler)
>
> And see if that helps?
>
> Regards,
> Andy
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside



More information about the PySide mailing list