The proper use of QSignalMapper
David Boddie
david at boddie.org.uk
Wed Jan 17 10:51:40 EST 2007
borntonetwork wrote:
> I am trying to implement QTCore.QSignalMapper using PyQT. I finally got
> to a point where I don't receive any compile or runtime error messages,
> but I also do not see the final slot function fire off. Here is a
> snippet of the code:
>
> self.signalMapper = QtCore.QSignalMapper(window)
> # Use qsignalmapper to use of one slot function for multiple
> # widgets. The map() function sends the slot an extra param
> # that identifies the sender.
> for idx in range(1, maxIngredients+1):
> wName = 'chkProductIngredientsDelete_'+str(idx)
> w = self.__dict__[wName]
> self.app.connect(w, QtCore.SIGNAL("stateChanged(int)"),
> self.signalMapper,
> QtCore.SLOT("self.signalMapper.map"))
You need to pass the C++ signature to the SLOT() function. I believe
you want the form that does not accept any arguments:
self.app.connect(w, QtCore.SIGNAL("stateChanged(int)"),
self.signalMapper,
QtCore.SLOT("map()"))
Alternatively, you can pass the slot directly to the function:
self.app.connect(w, QtCore.SIGNAL("stateChanged(int)"),
self.signalMapper.map)
PyQt accepts Python methods as slots, without requiring that they be
wrapped in calls to SLOT().
David
More information about the Python-list
mailing list