[PyQt] QVariant bug(?)

Arve Knudsen arve.knudsen at gmail.com
Tue Sep 2 21:12:54 BST 2008


On Tue, Sep 2, 2008 at 4:04 PM, Phil Thompson
<phil at riverbankcomputing.com> wrote:
> On Tue, 2 Sep 2008 11:29:00 +0200, "Arve Knudsen" <arve.knudsen at gmail.com>
> wrote:
>> 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)

I don't understand what you mean here. QVariant.toPyObject currently
works with StringValue objects?

Arve


More information about the PyQt mailing list