2

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>

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

4

3 回答 3

4

PyQt 4.6,使用现​​代 API:

该类QVariant被实现为映射类型。QVariant当需要实例时,可以传递任何 Python 对象。当 Qt 返回 a QVariant then 时,它将自动转换为原始 Python 对象或等效对象。 None被解释为无效QVariant,反之亦然。

于 2009-10-08T15:34:49.850 回答
1

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

于 2009-09-15T15:48:32.213 回答
1

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

QVariant(possiblyAQVariant).toPyObject()

这适用于 QVariants 和 Python 类型。

于 2009-09-15T17:49:10.690 回答