Python 为什么不';t QVariant.toFoo()和QVariant.convert(Foo)等价物?
我正在尝试将QVariant转换为QSizePython 为什么不';t QVariant.toFoo()和QVariant.convert(Foo)等价物?,python,qt,pyqt,Python,Qt,Pyqt,我正在尝试将QVariant转换为QSize from PyQt4.QtCore import ( 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'>
从PyQt4.QtCore导入(
QVariant,
QSize,
)
s=QSize(4,3)
x=QV变量
#检查,并希望做转换
打印x.canConvert(QVariant.Size)#真
打印x.convert(QVariant.Size)#真
打印类型(x)#…为什么??
打印类型(x.toSize())#
为什么我必须做x.toSize才能使x的类型为QSize?我期望x.convert()会使x成为QSize的实例
这对我没什么帮助。。。
…因为它说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'
你误解了这个计划的目的 它转换变量值的类型,而不是
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'