[PyQt] Problems with new-style signal/slot syntax
Baz Walter
bazwal at ftml.net
Tue Apr 9 21:06:44 BST 2013
When doing new-style connections, I normally use a Python type object as
the selector (if necessary), and only very occasionally use a string.
However, I was surprised to discover that this does not always work as
expected. For example:
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
c = gui.QComboBox()
c.activated['QString']
works okay, but:
m = QtGui.QMenu()
m.triggered['QAction']
gives this error:
KeyError: 'there is no matching overloaded signal'
After a bit of trial and error, it seems that signatures with "plain" or
"const" arguments work okay, but the ones with "pointer" arguments
don't. That is, unless the full C++ signature is used, in which case it
always works:
m.triggered['QAction *']
<bound signal triggered of QMenu object at 0x2512b00>
c.activated['const QString &']
<bound signal activated of QComboBox object at 0x18308c0>
(Is it intended that these latter two variants work? It doesn't seem to
be documented anywhere).
--
Regards
Baz Walter
More information about the PyQt
mailing list