有没有一种可能,自动QVariants转换为Python对象?
题
PyQt的4.5.4,2.6.2的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.6的PyQt使用现代API:
在
QVariant
类被实现为 映射类型。任何Python对象可以是 当QVariant
实例传递 预期。当Qt的返回QVariant
然后它会自动将 转换为原始的Python 对象或等效。None
是 解释为无效QVariant
和 反之亦然。
其他提示
您可以使用上的QVariant的.toPyObject()方法。我怀疑,这适用于自定义类型,虽然。
我发现的唯一的解决方案是每一个值转换成的QVariant然后回到:
QVariant(possiblyAQVariant).toPyObject()
这适用于QVariants和Python类型。
不隶属于 StackOverflow