0

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のタイプをQSizeにするためにx.toSizeを実行する必要があるのはなぜですか?x.convert()がxをQSizeのインスタンスにすることを期待していました。

これは私にはあまり役に立ちませんでした... http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qvariant.html#convert ... convert()"が要求されたタイプのバリアント...」

助けてくれてありがとう!

4

1 に答える 1

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'
于 2012-09-07T23:22:26.043 に答える