[PyQt] Slots being called on deleted QObjects
jeremy at jeremysanders.net
Sun Apr 6 16:08:43 BST 2014
I'm still getting numerous bug reports from users where slots are called on
deleted QObjects, giving a crash. As I previously reported, changing these
to new style signals and using "@pyqtSlot" on the slot appears to prevent
these bugs, but it's very hard to find every case.
Looking through the source code of sip (siplib/qtlib.c), it says:
* We used to check that any wrapped C++ object still existed and
* returning None if it didn't. This caused inconsistent behaviour
* when the slot was a method connected to its object's destroyed()
I assume this is the code used to call slots on QObjects? Is this the reason
why I started getting these problems a year or two ago?
If this is the problem, is it possible to make the code more intelligent and
check if the C++ object is there as long as the signal isn't destroyed()?
More information about the PyQt