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类型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top