从QVariant到Integer和String

alp*_*ric 5 python qt pyqt qvariant qtcore

输入的用户value可以是:字符串或整数.

QAbstractTableModelsetData()方法总是得到这个value作为QtCore.QVariant

问题:

如何实现if/elif/else内部setData()区分是收到的QVariant是字符串还是整数?(因此使用了正确的QVariant转换方法(例如.toString()或toInt()))

Ps有趣的是,尝试将QVarianttoInt()转换为元组,例如:(0, False)(123, True)

lpa*_*app 8

您可以检查类型:

if myVariant.type() == QVariant.Int:
    value = myVariant.toInt()
elif myVariant.type() == QVariant.QString:
    value = myVariant.toString()
Run Code Online (Sandbox Code Playgroud)

鉴于上面的表格现已过时,建议以这种方式检查:

if myVariant.canConvert(QMetaType.Int):
    value = myVariant.toInt()
elif myVariant.canConvert(QMetaType.QString)
    value = myVariant.toString()
Run Code Online (Sandbox Code Playgroud)