Existe a possibilidade de converter automaticamente os qvariants em objetos Python?

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

  •  21-09-2019
  •  | 
  •  

Pergunta

PYQT 4.5.4, Python 2.6.2

Desde a versão 4.5.2 PYQT, é capaz de aceitar quaisquer objetos python onde anteriormente apenas QVariants foram permitidos. Isso leva a alguns problemas:

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

Existe a possibilidade de remover essa inconsistência?

Foi útil?

Solução

PYQT 4.6, usando a API moderna:

o QVariant A classe é implementada como um tipo mapeado. Qualquer objeto python pode ser passado quando um QVariant a instância é esperada. Quando o QT retorna um QVariantEm seguida, ele será automaticamente convertido para o objeto Python original ou um equivalente. None é interpretado como um inválido QVariant e vice versa.

Outras dicas

Você pode usar o método .topyObject () em um qvarariant. Duvido que isso funcione para tipos personalizados, no entanto.

A única solução que encontrei é converter todos os valores em um qVariant e depois de volta:

QVariant(possiblyAQVariant).toPyObject()

Isso funciona para os tipos de qvariants e python.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top