[PyQt] Exposing complex Qt objects as javascript objects

Henning Schröder henning.schroeder at gmail.com
Thu Apr 23 01:31:39 BST 2009


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).


> I managed to go around it by defining a function that returns a QVariant:
> [..]
> but I'd really like to have "fun" as a property instead of a function.
Instead of properties you could in some use-cases replace it with
named child objects. (See the timer object in attached example. Use
dir(python) or dir(python.timer) in the shell).


Henning
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scriptshell1.py
Type: text/x-python
Size: 1430 bytes
Desc: not available
Url : http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20090423/13a65362/scriptshell1.py


More information about the PyQt mailing list