[PyQt] Passing a QWidget* wrapped in a PyCObject from a C++ program?

Elias Bachaalany lallousz-pyqt4 at yahoo.com
Thu Oct 21 10:45:25 BST 2010


Hi Phil,

Using Python 2.6, I could make it work with:

sip.wrapinstance(sip.voidptr(the_widget).__int__(), QtGui.QWidget)

But only after figuring out that I also had to recompile SIP with 
SIP_SUPPORT_PYCOBJECT

Thanks a lot.

--
Elias
On 10/18/2010 2:04 PM, Phil Thompson wrote:
> On Mon, 18 Oct 2010 11:45:07 +0200, Elias Bachaalany
> <lallousz-pyqt4 at yahoo.com>  wrote:
>> Hello
>>
>> I have a C++ program that creates a QWidget* and can return that to
> Python.
>>
>> I want to pass that QWidget * to PyQt so that the newly created widgets
>> have this widget as their parent. How to do that?
>>
>> In C++:
>>
>> QWidget *theWidget;
>> PyObject *get_widget()
>> {
>>     return PyCObject_FromVoidPtr(theWidget, NULL)
>> }
>>
>> Now is it possible to get this QWidget* and give to PyQt / QWidget
> class?
>
> If your PyCObject is accessible from Python then you should be able to
> do...
>
> import sip
> from PyQt4.QtGui import QWidget
>
> widget = sip.wrapinstance(sip.voidptr(pycobj, QWidget))
>
> Phil




More information about the PyQt mailing list