[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyKDE] Need help passing PyQt objects to other C++ code
From:       David Boddie <david () boddie ! org ! uk>
Date:       2006-08-19 11:09:26
Message-ID: 200608191309.27086.david () boddie ! org ! uk
[Download RAW message or body]

On Fri Aug 18 16:43:17 MEST 2006, Jack Jansen wrote:

> I need to pass the underlying C++ object for a given PyQt object to
> another module, but I can't seem to find a way to do this.
> To be a bit more concrete: I have a Python application that creates a
> QWidget, and I would like to pass the C++ equivalent of that QWidget
> to my own C++ code (which is not wrapped with sip but with bgen, a
> different wrapper-generator).

So, you're extending Python rather than embedding it in a C++ application?

> Initially I thought that sip.voidptr was the solution: Cast the
> QWidget to a sip.voidptr, then pass that to my wrapper (either as a
> CObject, or even as an int, if all else fails:-). But: I can't seem
> to find how to get the sip.voidptr for a given QWidget, even though
> that seems to be exactly what sip.voidptr is meant for, according to
> the documentation. Is this possible at all?

Or try importing the sip module and "unwrapping" your widget instance:

  import sip
  addr = sip.unwrapinstance(my_widget)

You'll get a Python integer that can either be passed as it is, or you
can use it to create a voidptr object and obtain a PyCObject from that:

  ptr = sip.voidptr(addr)
  cobj = ptr.ascobject()

> Or am I barking up the wrong tree? I also had a look at the sip API
> for C/C++ code, hoping I could find a method I could pass to
> PyArg_Parse(..., "O&", ...) but no luck. Again, I would even be happy
> with a method that would just return me the bits with no-questions-no-
> guarantees, but I must be looking in the wrong place.

If you can, you should try to do all of this in Python. I think you have
all you need, but let us know if there's something missing.

Good luck!

David

_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic