2015-02-09 38 views
1
獲得Python列表

如果Qt.UserRole模型的headerData()返回Python列表變量:如何從的QVariant

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

而不是常規的Python列表的調用與函數:

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

得到了QVariant object:

<PyQt4.QtCore.QVariant object at 0x10d3b67c0> 

嘗試轉換返回的QVariant反對Python使用:

pythonList=returnedValue.toPyObject() 

沒有工作。我試圖做的事:

每個在returnedValue.toList(): 打印每個

但仍然打印出一些QVariants。應該使用什麼方法將QVariant轉換爲Python列表?

回答

3

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