On Sun, Jul 24, 2011 at 3:57 PM, Sebastian Wiesner <[email protected]> wrote: > 2011/7/24 Erik Janssens <[email protected]>: >> On Sun, 2011-07-24 at 14:17 +0200, Sebastian Wiesner wrote: >>> 2011/7/24 Erik Janssens <[email protected]>: >>> > On Sun, 2011-07-24 at 11:00 +0200, Sebastian Wiesner wrote: >>> >> 2011/7/23 Erik Janssens <[email protected]>: >>> >> > Hi, >>> >> > >>> >> > when connecting a Python method to the >>> >> > QObject.destroyed signal, it seems as >>> >> > if the connected slot is only called with >>> >> > one argument instead of two, this results >>> >> > in : >>> >> > >>> >> > TypeError: destroyed_slot() takes exactly 2 arguments (1 given) >>> >> > Error calling slot "destroyed_slot" >>> >> > >>> >> > while I would expect 2 arguments (self and >>> >> > the object being destroyed). >>> >> > >>> >> > am I missing something or is this possibly >>> >> > a bug ? >>> >> >>> >> The "destroyed()" signal is overloaded, so there are actually two >>> >> signals "destroyed()" and "destroyed(QObject)". You apparently >>> >> connected to the former. In order to connect to the latter, you need >>> >> to explicitly choose the right signature: >>> >> "obj.destroyed[QObject].connect(self.destroyed_slot)" >>> > >>> > You are right, choosing the right signature works. But how do >>> > you know this signal is overloaded, I cannot see this mentioned >>> > in the docs ? >>> >>> I don't know about the PySide documentation, but you can easily see >>> that in the Qt documentation [1]. The signature of "destroyed" is >>> "QObject::destroyed(QObject *obj=0)". The argument "obj" has a >>> default value, and C++ implements default values for arguments by >>> generating overloaded functions. >>> >>> [1] http://doc.qt.nokia.com/latest/qobject.html#destroyed >> >> Thank you for pointing this out, I was unaware of this >> 'implementation detail', it seems PyQt handles this case >> different. > > Really? PyQt should actually handle this case in exactly the same way. >
this code always worked perfectly with PyQt. I had the assumption that a default argument in a signal would be treated the same way as in Python, this assumption always seemed valid using PyQt _______________________________________________ PySide mailing list [email protected] http://lists.pyside.org/listinfo/pyside
