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>
有可能消除这种不一致吗?
答案 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类型。