7

ユーザーが入力しvalueたものは、文字列または整数の両方です。

QAbstractTableModelsetData()メソッドは常にこれvalueを次のように取得しますQtCore.QVariant

質問:

受信したものが文字列か整数かif/elif/elsesetData()区別するために実装する方法は? QVariant(したがって、適切なQVariant変換メソッド (.toString() や toInt() など) が使用されます)

Ps 興味深いことに、QVarianttoInt() を変換しようとすると、次のようなタプルが生成されます:(0, False)または(123, True)

4

1 に答える 1

12

タイプに対してチェックできます

if myVariant.type() == QVariant.Int:
    value = myVariant.toInt()
elif myVariant.type() == QVariant.QString:
    value = myVariant.toString()

上記のフォームは現在廃止されているため、次の方法で確認することをお勧めします

if myVariant.canConvert(QMetaType.Int):
    value = myVariant.toInt()
elif myVariant.canConvert(QMetaType.QString)
    value = myVariant.toString()
于 2014-12-25T00:48:22.277 に答える