2

PyQt 4.5.4、パイソン 2.6.2

バージョン 4.5.2 以降、PyQt は、以前は許可されていたすべての Python オブジェクトを受け入れることQVariantsができます。これにより、いくつかの問題が発生します。

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

この矛盾を取り除く可能性はありますか?

4

3 に答える 3

4

PyQt 4.6、最新の API を使用:

QVariantクラスは、マップされた型として実装されます。インスタンスが必要な場合は、任意の Python オブジェクトを渡すことができますQVariant。Qt が を返すQVariant と、元の Python オブジェクトまたは同等のものに自動的に変換されます。 Noneは無効と解釈され、QVariantその逆も同様です。

于 2009-10-08T15:34:49.850 に答える
1

私が見つけた唯一の解決策は、すべての値を QVariant に変換してから戻すことです。

QVariant(possiblyAQVariant).toPyObject()

これは、QVariant と Python の型で機能します。

于 2009-09-15T17:49:10.690 に答える
1

QVariant で .toPyObject() メソッドを使用できます。ただし、これがカスタムタイプで機能するかどうかは疑問です。

于 2009-09-15T15:48:32.213 に答える