¿Existe la posibilidad de convertir automáticamente QVariants a objetos Python?

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

  •  21-09-2019
  •  | 
  •  

Pregunta

PyQt 4.5.4, Python 2.6.2

Desde la versión 4.5.2 PyQt es capaz de aceptar cualquier objeto Python donde antes sólo se permitía QVariants. Esto lleva a algunos problemas:

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

¿Existe la posibilidad de eliminar esta inconsistencia?

¿Fue útil?

Solución

PyQt 4.6, utilizando la API moderna:

  

La clase QVariant se implementa como una   tipo asignada. Cualquier objeto Python puede ser   pasado cuando una instancia QVariant es   esperado. Cuando Qt devuelve un QVariant   entonces será automáticamente   convertido a la Python originales   objeto o un equivalente. None es   interpretado como un QVariant no válido y   viceversa.

Otros consejos

Se puede usar el método .toPyObject () en un QVariant. Dudo que esto funciona para tipos personalizados, sin embargo.

La única solución que he encontrado es la conversión de cada valor a una QVariant y luego de vuelta:

QVariant(possiblyAQVariant).toPyObject()

Esto funciona para QVariants y tipos de Python.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top