[PySide] QObject.destroyed() is not emitted

Stephan Deibel sdeibel at wingware.com
Thu Nov 29 15:42:43 CET 2012

Alexey Vihorev wrote:
> Ok, let's get less abstract. I got a QTableModel that has to free up some external resources upon its destruction (rollback/close a DB transaction).  In this particular case It's parent is QMdiSubWindow with self.setAttribute(QtCore.Qt.WA_DeleteOnClose), but that is not necessary  - it can be used inside complex widgets, etc.  The code is trivial, but does not work:
> class MyModel(QAbstractTableModel):
>      def onDestroy(self):
>          #Do some housekeeping
>      def __init__(self, entity_cls, parent=None, load=True, criteria=None):
>          ...	
>          self.destroyed.connect(self.onDestroy)
>          ...

Whether or not onDestroy is called in this is entirely dependent on 
whether they are object references to your instance of MyModel somewhere 
else in your code.  It may well be that the parent is holding onto a 
reference after it's closed for some reason (or some other code is), but 
it would be hard to verify this without a complete functional example 
(preferably something pared down as much as possible but still 
exhibiting the issue).

- Stephan

More information about the PySide mailing list