[PyKDE] Auto-connecting Slots

Phil Thompson phil at riverbankcomputing.co.uk
Fri Jan 27 19:43:31 GMT 2006


Tonight's PyQt4 snapshot implements Torsten's suggestion for using a decorator 
to control which signal/slot connections are made when pyuic4 auto-connects.

The problem is best demonstrated by QSpinBox which emits valueChanged(QString) 
and valueChanged(int). Defining an auto-connect method 
on_spinbox_valueChanged means that the method is connected to both signals 
and so gets invoked twice. Until now the method had to look at the type of 
the argument and just return if it was the one it didn't want.

The QtCore.signature() decorator takes a single argument which is, in effect, 
the C++ signature of the method which tells the auto-connect code which 
signal to connect. For example...

    @QtCore.signature("on_spinbox_valueChanged(int)")
    def on_spinbox_valueChanged(self, value):
        # value will only ever be an integer.

See the calculatorform.py example.

Phil




More information about the PyQt mailing list