Question

PyQt 4.5.4, Python 2.6.2

Depuis la version 4.5.2 PyQt est en mesure d'accepter tous les objets Python où ont été autorisés auparavant que QVariants. Cela conduit à des problèmes:

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

Est-il possible de supprimer ce inconsistance?

Était-ce utile?

La solution

PyQt 4.6, en utilisant l'API moderne:

  

La classe QVariant est mis en œuvre en tant que   le type cartographié. Tout objet Python peut être   passé lorsqu'une instance de QVariant est   attendu. Lorsque Qt retourne un QVariant   alors il sera automatiquement   converti en Python d'origine   objet ou un équivalent. None est   interprétée comme une QVariant invalide et   vice-versa.

Autres conseils

Vous pouvez utiliser la méthode .toPyObject () sur un QVariant. Je doute que cela fonctionne pour les types personnalisés, cependant.

La seule solution que j'ai trouvé est la conversion de chaque valeur à un QVariant puis retour:

QVariant(possiblyAQVariant).toPyObject()

Cela fonctionne pour QVariant et types Python.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top