是否有可能自动将QVariants转换为Python对象?

时间:2009-09-03 10:07:01

标签: pyqt qvariant

PyQt 4.5.4,Python 2.6.2

从版本4.5.2开始,PyQt能够接受任何以前只允许QVariants的Python对象。这会导致一些问题:

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

有可能消除这种不一致吗?

3 个答案:

答案 0 :(得分:4)

PyQt 4.6,使用现​​代API:

  

QVariant类实现为   映射类型。任何Python对象都可以   在QVariant实例时传递   预期。当Qt返回QVariant时   然后它将自动成为   转换为原始的Python   对象或等同物。 None是   被解释为无效QVariant和   反之亦然。

答案 1 :(得分:1)

您可以在QVariant上使用.toPyObject()方法。我怀疑这适用于自定义类型。

答案 2 :(得分:1)

我找到的唯一解决方案是将每个值转换为QVariant,然后返回:

QVariant(possiblyAQVariant).toPyObject()

这适用于QVariants和Python类型。