On Tue, 09 Apr 2013 21:06:44 +0100, Baz Walter <baz...@ftml.net> wrote: > 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). Qt treats const QString& and plain QString as equivalent as far as signal arguments are concerned. However QAction* is different to QAction. A QObject derived instance will only ever be passed as a pointer, but that's not true for other types. Therefore, for consistency, I think it would be wrong to strip the "*". I agree the documentation could be clarified. Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt