是否有可能自动将 QVariants 转换为 Python 对象?

发布于 2024-08-04 04:37:46 字数 329 浏览 3 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甩你一脸翔 2024-08-11 04:37:46

PyQt 4.6,使用现​​代 API:

QVariant 类被实现为
映射类型。任何Python对象都可以是
QVariant 实例被传递时
预期的。当 Qt 返回 QVariant 时
那么它会自动成为
转换为原始Python
对象或等价物。
解释为无效的 QVariant 并且
反之亦然。

PyQt 4.6, using the modern API:

The QVariant class is implemented as a
mapped type. Any Python object can be
passed when a QVariant instance is
expected. When Qt returns a QVariant
then it will automatically be
converted to the original Python
object or an equivalent. None is
interpreted as an invalid QVariant and
vice versa.

心凉 2024-08-11 04:37:46

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

You could use the .toPyObject() method on a QVariant. I doubt that this works for custom types, though.

酒儿 2024-08-11 04:37:46

我找到的唯一解决方案是将每个值转换为 QVariant,然后再转换回来:

QVariant(possiblyAQVariant).toPyObject()

这适用于 QVariants 和 Python 类型。

The only solution I have found is converting every value to a QVariant and then back:

QVariant(possiblyAQVariant).toPyObject()

This works for QVariants and Python types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文