[PyQt] PyQt4 question
Phil Thompson
phil at riverbankcomputing.co.uk
Sat May 26 20:21:42 BST 2007
On Saturday 26 May 2007 7:58 pm, Detlev Offenbach wrote:
> On Samstag, 26. Mai 2007, Phil Thompson wrote:
> > On Saturday 26 May 2007 4:52 pm, Detlev Offenbach wrote:
> > > Hi,
> > >
> > > is there a PyQt equivalent to "qobject_cast<T*>(object)"?
> >
> > sip.cast()?
> >
> > But it shouldn't be necessary if the sub-class conversion code has been
> > properly implemented.
>
> How do I do that. I haven't wrapped complicated stuff like this so far. The
> situation is as follows. I have the following code:
>
> self.plugins.extend(self.designer.pluginManager().instances())
> for plugin in self.plugins:
> if isinstance(plugin, QDesignerFormEditorPluginInterface):
> if not plugin.isInitialized():
> plugin.initialze(self.designer)
>
>
> "self.designer.pluginManager().instances()" returns a list of QObject. The
> first if statement shall check, wether the returned QObject is of type
> QDesignerFormEditorPluginInterface. In C++ you would do it with code like
>
> if ( (qobject_cast<QDesignerFormEditorPluginInterface*>(plugin)) )
>
> How can the problem be solved with PyQt4 and Python?
>
> Note: self.designer.pluginManager() returns an object of type
> QDesignerPluginManager.
The wrapper for QDesignerFormEditorPluginInterface must define
some %ConvertToSubClassCode which will use RTTI provided by the instance to
identify the right Python type object. See how PyQt does it for QObject and
QEvent. If the instance doesn't provide any RTTI then you're stuck.
Phil
More information about the PyQt
mailing list