[PyQt] Proposal for New-style Signals
Phil Thompson
phil at riverbankcomputing.com
Thu Jan 24 14:07:51 GMT 2008
On Thursday 24 January 2008, Andy Davidoff wrote:
> On Jan 24, 2008, at 5:27 AM, Phil Thompson wrote:
> > The design guarantees no future compatibility problems. What do you
> > mean
> > by "could create/hide bugs"?
> >
> >> Although I don't use an IDE or code completion, I would still
> >> prefer a
> >> more explicit type string over an implicit one. I'd rather the code
> >> was more legible and I believe it could even help the developer catch
> >> type errors earlier, especially when working with someone else's
> >> code.
>
> It's not explicitly clear where the error is in the code below, or
> even if there is an error, since I have no idea which type list is the
> default...
>
> def slot(combovalue):
> if somedict.has_key(combovalue):
> print "You selected the value", combovalue
> else:
> print "Validation error!"
>
> q = QComboBox()
> q.currentIndexChanged.connect(slot)
You find out the same way you found out that there was a currentIndexChanged()
signal in the first place - the docs.
> > Of the overloaded signals, none of the overloads are obvious
> > candidates for
> > being the default - so in those cases there would be no default and
> > the long
> > form would have to be used. In fact the only use of the "default"
> > flag would
> > probably be to preserve backwards compatibility in the event of a
> > later
> > version of Qt introducing a new overload.
>
> Which of the overloaded currentIndexChanged, activated, or highlighted
> signals on QComboBox, for example, are obviously not candidates for
> being the default?
They are all candidates for being the default, that's my point. There is no
outstanding candidate.
> Honestly, the fact that the default is not guaranteed to always be
> usable sounds worse.
>
> Will there be any way to discover the default and/or exposed signals
> via reflection?
The following, slightly strange, code would work...
for s in QComboBox.currentIndexChanged:
if s is QComboBox.currentIndexChanged:
print s, "is the default"
Phil
More information about the PyQt
mailing list