Gibt es eine Möglichkeit, automatisch QVariants zu konvertieren Python-Objekte?

StackOverflow https://stackoverflow.com/questions/1372557

  •  21-09-2019
  •  | 
  •  

Frage

PyQt 4.5.4, Python 2.6.2

Seit Version 4.5.2 PyQt der Lage ist, jeden Python-Objekte zu übernehmen, wo früher nur QVariants durften. Dies führt zu einigen Problemen:

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

Gibt es eine Möglichkeit, diese Inkonsistenz zu entfernen?

War es hilfreich?

Lösung

PyQt 4.6, mit der modernen API:

  

Die QVariant Klasse wird als ein implementiert   kartiert Typ. Alle Python-Objekt kann sein   übergeben, wenn eine QVariant Instanz   erwartet. Wenn kehrt Qt eine QVariant   dann wird es automatisch sein   auf den ursprünglichen Python umgewandelt   Objekt oder ein Äquivalent. None ist   interpretiert als eine ungültige QVariant und   vice versa.

Andere Tipps

Sie könnten die .toPyObject () -Methode auf einem QVariant verwenden. Ich bezweifle, dass dies funktioniert für benutzerdefinierte Typen, though.

Die einzige Lösung, die ich gefunden habe, ist jeder Wert auf einen QVariant Umwandlung und dann zurück:

QVariant(possiblyAQVariant).toPyObject()

Dies funktioniert für QVariants und Python-Typen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top