我正在尝试将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'>
Run Code Online (Sandbox Code Playgroud)
为什么我必须为x的类型x.toSize做QSize?我期望x.convert()会使x成为QSize的一个实例.
这对我来说没什么帮助... http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qvariant.html#convert ...因为它说转换()"施放了要求类型的变体......"
谢谢您的帮助!
你误解了QVariant.convert的目的.
它转换变量值的类型,而不是QVariant自身.
展示:
>>> from PyQt4.QtCore import QVariant
>>> v = QVariant(100)
>>> v.typeName()
'int'
>>> v.convert(QVariant.String)
True
>>> v.typeName()
'QString'
Run Code Online (Sandbox Code Playgroud)
该to*()函数返回的变量值转换为请求的类型(如果可能),但不改变当前类型的QVariant本身:
>>> v.toInt()
(100, True)
>>> v.typeName()
'QString'
Run Code Online (Sandbox Code Playgroud)