Есть ли возможность автоматически конвертировать QVariants в объекты Python?

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

  •  21-09-2019
  •  | 
  •  

Вопрос

PyQt 4.5.4, Python 2.6.2

Начиная с версии 4.5.2 PyQt способен принимать любые объекты Python, где ранее только QVariants были разрешены.Это приводит к некоторым проблемам:

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

Есть ли возможность устранить это несоответствие?

Это было полезно?

Решение

PyQt 4.6, использующий современный API:

В QVariant класс реализован как сопоставленный тип.Любой объект Python может быть передан, когда QVariant экземпляр является ожидаемым.Когда Qt возвращает QVariant затем он будет автоматически преобразован в исходный Python object или эквивалент. None является интерпретируется как недопустимый QVariant и наоборот.

Другие советы

Вы могли бы использовать .Метод toPyObject() для QVariant .Однако я сомневаюсь, что это работает для пользовательских типов.

Единственное решение, которое я нашел, - это преобразование каждого значения в QVariant, а затем обратно:

QVariant(possiblyAQVariant).toPyObject()

Это работает для типов QVariants и Python.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top