Как получить список Python из QVariant

Если Qt.UserRole модель headerData() возвращает переменную списка Python:

if role==Qt.UserRole:
    return QVariant(['one','two','three'])

Вместо обычного списка Python функция, которая вызывается с помощью:

returnedValue = myModel(index.column(), Qt.Horizontal, Qt.UserRole)

получает объект QVariant:

<PyQt4.QtCore.QVariant object at 0x10d3b67c0>

Попытка преобразовать возвращенный объект QVariant в Python с помощью:

pythonList=returnedValue.toPyObject()

не работал. Я пытался сделать:

для каждого в returnValue.toList(): распечатать каждый

Но это все равно выводит некоторые QVariant. Какой метод следует использовать для преобразования QVariant в список Python?


person alphanumeric    schedule 09.02.2015    source источник


Ответы (1)


QVariant является общим контейнером практически для всех типов встроенных типов, поэтому, чтобы преобразовать данные QVariant обратно, вам нужно знать, какие данные в нем хранятся.

from PyQt4.QtCore import QVariant

a = QVariant(['one', 'two', 'three'])

aList = [unicode(i.toString()) for i in a.toList()]
print aList

вывод такой:

[u'one', u'two', u'three']

person Cui Heng    schedule 09.02.2015