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. _______________________________________________ PySide mailing list [email protected] http://lists.pyside.org/listinfo/pyside
