[PyQt] Exposing complex Qt objects as javascript objects

Ori Avtalion ori at avtalion.name
Fri Apr 24 12:49:30 BST 2009


On 04/23/2009 03:31 AM, Henning Schröder wrote:
> On Tue, Apr 21, 2009 at 2:15 AM, Ori Avtalion <ori at avtalion.name> wrote:
>> Hi,
>>
>> I'm trying to create a Qt object that will be exposed to javascript.
>> I want that javascript object to be complex: It has nested objects
>> inside it, and has arrays with other objects in them.
>>
>> I'm not sure how to define the properties for the top object that I
>> expose. pyqtProperty doesn't accept "QVariant". (It returns the error
>> "TypeError: type 'QVariant' is not supported as a property type")
> Dynamic properties via setProperty use variants but I think it does
> not work correctly for objects and widgets. It seems that the type is
> not set to QMetaType::QObjectStar or QMetaType::QWidgetStar in the
> constructor. At least QtScript does not recognize the variant as a
> object or widget (see app property in attached example - the C++
> equivalent would work this way).
> 

Thanks Henning!

setProperty() seems to work fine when I give it a QVariant("{'foo':'bar'}")

However, it means I have both a raw pythonic copy of it, and a QVariant
copy that I can't modify. If I have a large object, I want to avoid
copying it just for that. (I guess I won't use it for large objects)

Any idea why pyqtProperty doesn't accept "QVariant"?

-Ori


More information about the PyQt mailing list