[PyQt] QWidget 'destroyed' signal: possible regression?
Phil Thompson
phil at riverbankcomputing.com
Sun Mar 11 11:05:07 GMT 2012
On Sun, 11 Mar 2012 11:48:44 +0100, Erik Janssens
<Erik.Janssens at conceptive.be> wrote:
> Hello Pierre, Phil,
>
> I'm not so sure the current behavior is inconsistent. One
> of the reasons of using signal/slot over normal callbacks is
> that they are disconnected when one of the objects gets
> deleted.
>
> So if you connect the destroyed signal to a non-QObject-method, the
> slot is called. If you connect it to a QObject-method that has
> been deleted, the slot is not called.
Yes - but the point is that it hasn't yet been deleted.
> The destroyed signal is emitted in the destructor of QObject. So in
> case of a QWidget, this after the QWidget destructor has done its work.
> After this has been done, any call to a QWidget method might crash the
> application.
>
> I would prefer the behavior to be consistent with C++ Qt (although
> I don't know what that exactly is)
I think the (now changed) behaviour is consistent.
> The documentation of Qt states that the destroyed signal should be
> used to monitor a QObject, I don't think its intended to serve
> as a kind of destructor.
Agreed - which is why I said I considered this particular usage an
application bug.
> It's worth thinking this through before changing it...
It's been changed - but it can always be changed back if current snapshots
prove to be a problem.
Phil
More information about the PyQt
mailing list