2009-09-03 5 views
2

PyQtは4.5.4、Pythonの2.6.2QVariantをPythonオブジェクトに自動的に変換する可能性はありますか?バージョン4.5.2 PyQtは以来

のみQVariantsが許可された以前の任意のPythonオブジェクトを受け入れることができます。これにより、いくつかの問題が発生します。

>>> itemModel.data(index, Qt.EditRole) 
<Product object at 0xb7ce766c> 
>>> index.data(Qt.EditRole) 
<QVariant object at 0xb7ce768c> 

この不一致を取り除く可能性はありますか?

答えて

4

PyQtは4.6は、:

QVariantクラスは マップされた型として実装されています。 QVariantインスタンスが と予想される場合、どのPythonオブジェクトも になります。 QtがQVariant を返した場合、自動的に が元のPython オブジェクトまたは同等のオブジェクトに変換されます。 Noneは が無効であると解釈され、その逆の場合はQVariantと と解釈されます。

1

QVariantで.toPyObject()メソッドを使用できます。私は、これはカスタムタイプではうまくいかないと思っています。私が発見した

+1

です。しかし、実際には、問題はQVariantでない限りすぐに始まります。 –

1

唯一の解決策は、QVariantにすべての値を変換してバックされます。

QVariant(possiblyAQVariant).toPyObject() 

これはQVariantsとPythonのタイプのために働きます。近代的なAPIを使用して

関連する問題