[PyQt] QVariant bug(?)

Phil Thompson phil at riverbankcomputing.com
Tue Sep 2 15:04:20 BST 2008

On Tue, 2 Sep 2008 11:29:00 +0200, "Arve Knudsen" <arve.knudsen at gmail.com>
> I have created a simple test case which triggers a likely bug in PyQt.
> As the case demonstrates, I have a class template "PropertyValue"
> which I wrap and use with QVariant. When I run the test program
> ("tst.py") however, there is a segfault in the PropertyValue copy
> constructor. The reason as far as I've been able to tell is that PyQt
> doesn't register its own metatype for "StringValue"
> (PropertyValue<QString>), since this is already constructed for the
> C++ type (see qobject.sip, line 1479), with chaotic results (the C++
> copy constructor receives a raw PyObject for the right-hand-side
> argument).

The bug should be fixed in tonight's PyQt snapshot.

However, it leaves the question as to how you would get the instance back
out of the QVariant. QVariant.toPyObject() only handles Python objects at
the moment - not wrapped non-Qt C++ instances as you have.

I think I need to add an optional type argument to toPyObject(), eg...

    my_string_value = variant.toPyObject(StringValue)


More information about the PyQt mailing list