[PyKDE] sip, was: newest Version
Jim Bublitz
jbublitz at nwinternet.com
Sat Nov 1 03:24:00 GMT 2003
On Friday October 31 2003 13:49, Roland Schulz wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hey,
>
> trying to change the sip layer makes great advancement.
> Overwriting the className function already makes the Preview
> working!! Overwriting metaObject also makes signals, slots and
> propterties (partly) working!! So I think this will work.
> What I did for className is that I added to sipqtQWidget.h:
> virtual const char *className() const {return "FileChooser";}
I may be wrong (it happened once before I think), but it seems to
me all you've done is move the C++ proxy idea back into
sipqtQWidget.cpp.
Notice that you've set sipqtQWidget::className() to always return
"FileChooser" now - in the proxy attempt you had it always
returning "QWidget". I haven't traced out QtDesigner much at
all, but it does use a lot of "idFromClassName" type calls, so
it seems reasonable to expect that changing the object's class
name will affect its behavior in QtDesigner.
It seems to me if it works in sipqtQWidget.cpp, it should work
without modifying the PyQt cpp or sip files also.
I think you're modifying the same object - just in a different
place. The other difference would be that in the proxy attempt,
you overloaded *all* of QWidget's methods, not just the
*virtual* methods, whereas that doesn't happen when you modify
sipqtQWidget.cpp.
> How should I do this in qwidget.sip? How can I get the
> classname (of course harding it is only for testing)? Calling
> className from Python space gives the correct result, so this
> should be doable. How can I access variables defined in the
> Python claass? Is there a way to tell sip to add this
> className method to all classes?
> Probably all these questions are pretty stupid, but I just
> don't get how sip works.
Jim
More information about the PyQt
mailing list