代码之家  ›  专栏  ›  技术社区  ›  Georg Schölly Crazy Developer

是否有可能自动将qvariants转换为python对象?

  •  2
  • Georg Schölly Crazy Developer  · 技术社区  · 15 年前

    pyqt 4.5.4,python 2.6.2

    由于4.5.2版的pyqt能够接受以前只有 QVariants 被允许。这会导致一些问题:

    >>> itemModel.data(index, Qt.EditRole)
    <Product object at 0xb7ce766c>
    >>> index.data(Qt.EditRole)
    <QVariant object at 0xb7ce768c>
    

    是否有可能消除这种不一致?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Georg Schölly Crazy Developer    15 年前

    PYQT 4.6,使用现代API:

    这个 QVariant 类实现为 映射类型。任何python对象都可以 当A通过 q-变体 实例是 预期。当qt返回a时 q-变体 然后它会自动 转换为原始python 对象或等效对象。 None 是 解释为无效 q-变体 和 反之亦然。

        2
  •  1
  •   Wim Verhavert    15 年前

    可以对qvariant使用.topyObject()方法。不过,我怀疑这是否适用于自定义类型。

        3
  •  1
  •   Georg Schölly Crazy Developer    15 年前

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

    QVariant(possiblyAQVariant).toPyObject()
    

    这适用于qvariants和python类型。