如何从 QVariant 获取 Python 列表

How to get Python List from QVariant

如果Qt.UserRole模型的headerData()returns一个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()

没用。我尝试过:

对于 returnedValue.toList() 中的每个: 打印每个

但这仍然会打印出一些 QVariants。应该使用什么方法将 QVariant 转换为 Python 列表?

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']