我正在尝试将QVariant转换为QSize。
from PyQt4.QtCore import (
QVariant,
QSize,
)
s = QSize(4,3)
x = QVariant(s)
#Check, and hopefully do conversion
print x.canConvert(QVariant.Size) #True
print x.convert(QVariant.Size) #True
print type(x) #<class 'PyQt4.QtCore.QVariant'>...why??
print type(x.toSize()) #<class 'PyQt4.QtCore.QSize'>
为什么我必须为x的类型做x.toSize才能成为QSize?我期望x.convert()会使x成为QSize的一个实例。
这对我没什么帮助...... http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qvariant.html#convert ...因为它说convert()“将变体强制转换为所请求的类型......”
感谢您的帮助!
答案 0 :(得分:6)
你误解了QVariant.convert的目的。
它会转换变体值的类型,而不是QVariant
本身。
演示:
>>> from PyQt4.QtCore import QVariant
>>> v = QVariant(100)
>>> v.typeName()
'int'
>>> v.convert(QVariant.String)
True
>>> v.typeName()
'QString'
to*()
函数返回转换为请求类型的变量值(如果可能),但不要更改QVariant
本身的当前类型:
>>> v.toInt()
(100, True)
>>> v.typeName()
'QString'