是否有可能自动将 QVariants 转换为 Python 对象?
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>
是否有可能消除这种不一致?
PyQt 4.5.4, Python 2.6.2
Since version 4.5.2 PyQt is able to accept any Python objects where formerly only QVariants
were allowed. This leads to some problems:
>>> itemModel.data(index, Qt.EditRole)
<Product object at 0xb7ce766c>
>>> index.data(Qt.EditRole)
<QVariant object at 0xb7ce768c>
Is there a possibility to remove this inconsistence?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
PyQt 4.6,使用现代 API:
PyQt 4.6, using the modern API:
您可以在 QVariant 上使用 .toPyObject() 方法。不过,我怀疑这是否适用于自定义类型。
You could use the .toPyObject() method on a QVariant. I doubt that this works for custom types, though.
我找到的唯一解决方案是将每个值转换为 QVariant,然后再转换回来:
这适用于 QVariants 和 Python 类型。
The only solution I have found is converting every value to a QVariant and then back:
This works for QVariants and Python types.