C'è la possibilità di convertire automaticamente QVariants di oggetti Python?

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

  •  21-09-2019
  •  | 
  •  

Domanda

PyQt 4.5.4, Python 2.6.2

Dalla versione 4.5.2 PyQt è in grado di accettare eventuali oggetti Python dove in precedenza sono stati ammessi solo QVariants. Questo porta ad alcuni problemi:

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

C'è una possibilità per rimuovere questa inconsistenza?

È stato utile?

Soluzione

PyQt 4.6, utilizzando l'API moderna:

  

La classe QVariant è implementato come un   tipo mappato. Qualsiasi oggetto Python può essere   superato quando un'istanza QVariant è   previsto. Quando Qt restituisce un QVariant   allora sarà automaticamente   convertito al Python originale   oggetto o un equivalente. None è   interpretato come QVariant valido e   viceversa.

Altri suggerimenti

È possibile utilizzare il metodo .toPyObject () su un QVariant. Dubito che questo funziona per i tipi personalizzati, però.

L'unica soluzione che ho trovato è la conversione di ogni valore a una QVariant e poi di nuovo:

QVariant(possiblyAQVariant).toPyObject()

Questo funziona per QVariants e tipi di Python.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top