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

List:       pykde
Subject:    Re: [PyQt] Construct QVariant from object of user type
From:       "Arve Knudsen" <arve.knudsen () gmail ! com>
Date:       2008-04-17 8:44:52
Message-ID: a0d6258d0804170144u57c4266y1347eeb6e40eb3d9 () mail ! gmail ! com
[Download RAW message or body]

On 4/17/08, Matt Newell <newellm@blur.com> wrote:
> On Wednesday 16 April 2008 14:18:26 Arve Knudsen wrote:
>  > On Wed, Apr 16, 2008 at 11:33 AM, Phil Thompson
>  >
>  > <phil@riverbankcomputing.co.uk> wrote:
>  > > On Wednesday 16 April 2008, Arve Knudsen wrote:
>  > >  > Phil, any comment on this?
>  > >  >
>  > >  > Thanks,
>  > >  > Arve
>  > >
>  > >  Unless you can use the ctor that takes a void* I don't see how you can
>  > > expect to extend the functionality of a C++ class from Python.
>  >
>  > How am I supposed to use the QVariant(int typeOrUserType, const void*
>  > copy) constructor from Python? The documentation refers to
>  > sip.voidptr, which I know nothing about, and  to use qVariantFromValue
>  > which isn't defined.
>  >
>  > I need to store objects of a custom class in QVariants, with a certain
>  > type code (QVariant::Type). The reason I need to do this is that
>  > QItemEditorFactory is parameterized on QVariant::Type.
>  >
>  > Arve
>
>
>
> If you look at qmetatype.h, you'll see that it should be possible to create a
>  mechanism to register custom python classes as QVariant types.  You just need
>  to implement Constructor/Destructor methods that call Py_INCREF/Py_DECREF.
>  Then for each custom python type call QMetaType::registerType(...).  This
>  would need to be implemented in c++ with a python interface.
>
>  You could then write a custom QVariant constructor that detects if the python
>  object's type is registered, and automatically call the QVariant(int
>  type,void*) ctor, or throws an exception for non-registered types.

So I would *have to* do this in C++? Ugh.

>  BTW, you don't really have to use QItemEditorFactory.  You can use a custom
>  delegate.

I know .

Thanks,
Arve
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread] 

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