[PySide] Obtaining QObject from PySide based PyObject (complete)

Hugo Parente Lima hugo.lima at openbossa.org
Tue Aug 28 16:25:18 CEST 2012


On Tuesday, August 28, 2012 02:48:32 PM David García Garzón wrote:
> On Monday 27 August 2012 16:23:03 Hugo Parente Lima wrote:
> > On Monday, August 27, 2012 09:12:27 PM David García Garzón wrote:
> > > Sorry for the previous unfinished message. Here goes the final one.
> > > 
> > > I am porting a CPython library (boost based indeed) from PyQt to PySide.
> > > I had a function in the library that received a Sip wrapped widget
> > > as a PyObject and I used the very ugly SIP api to recover a pointer to
> > > the
> > > actual C++ QObject.
> > > 
> > > Does anyone know how recover the C++ QObject from the PyObject in
> > > PySide?
> > 
> > You can use:
> > Shiboken::Object::cppPointer(...), it's on libshiboken basewrapper.h
> > 
> > It receives two parameters, a SbkObject* and a PyTypeObject*, the
> > SbkObject* will be your PyObject*, just cast it and make sure it always
> > will be a Python object representing a C++ object bound using Shiboken,
> > the
> > PyTypeObject* must be the PyTypeObject* for QObject, you can get it using:
> > 
> > Shiboken::TypeResolver::get("QObject*")->pythonType();
> > 
> > TypeResolver class is located on libshiboken typeresolver.h header.
> > 
> > Hope this would help you.
> 
> Yes, thanks, this seems to be just what i needed. You even provided answer
> to what i wanted to ask next, how to identify pyside objects. No time to
> try it just now but i am eager to try it to see if it works. Thanks a lot.

There's a function on basewrapper.h that do just that, test if the PyObject is 
a SbkObject, i.e. a PySide object.

Shiboken::Object::checkType(PyObject*)

Returns true if the object is an instance of a type created by the Shiboken 
generator.

> David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20120828/5e4b4bc6/attachment.sig>


More information about the PySide mailing list