[PyKDE] Question on sipConvertRx (version 2.4)
phil at river-bank.demon.co.uk
Fri Jun 29 00:36:10 BST 2001
Thomas Malik wrote:
> I tumbled over this when i used the KToolBar.insertCombo method, like this
> toolbar.insertCombo( ['a' ], id, self.isEditable(),
> SIGNAL('activated(int)'), self.slotActivated, 1, self.shorttext
> The slotActivated method will be called without arguments (giving me a
> wrong argument count error). The sip declaration looks like
> int insertCombo(QStrList *,int,bool,const char*,SIP_RXOBJ_CON,SIP_SLOT_CON
> bool = 1,const char * = 0,int = 70,int=-1,
> QComboBox::Policy = QComboBox::AtBottom);
> The interesting piece of c++ code looks like
> a4 = sipConvertRx(sipNewProxy_kdeui,sipThis,"()",a4obj,NULL,&a5,&iserr);
> One could put an int parameter into SIP_SLOT_CON(), but there are actually
> possible signal parameters, e.g. activated(int) and activated(const char*)
> and i would end up being able to connect to only one of them. So i moved
> the code
> to a %MemberCode section doing this:
> sigargs = a3; // the signal name
> while (*sigargs && *sigargs != '(')
> a4 = sipConvertRx(sipNewProxy_kdeui,sipThis,sigargs,a4obj,NULL,&a5,&iserr);
> Then it works with both.
> Shouldn't this be generally done in sipConvertRx ? Any other idea ?
It can't be simply be implemented in sipConvertRx because it needs to be
told which of the other arguments is the signal. It could be automated
by introducing a SIP_SIGNAL type to replace the const char * in the SIP
definition. Added to the TODO list.
The solution you've got is the one I would implement.
More information about the PyQt