从QVariant到整数和字符串

8
用户输入的 value 可以是字符串或整数。
QAbstractTableModel 的 setData() 方法总是将此 value 作为 QtCore.QVariant 获取。
问题:
如何在 setData() 内部实现 if/elif/else,以区分接收到的 QVariant 是字符串还是整数? (因此使用适当的 QVariant 转换方法(如 toString() 或 toInt()))
附注: 有趣的是,试图将 QVariant 转换为 toInt() 会导致一个元组,例如: (0, False) 或 (123, True)。
1个回答

15

您可以根据类型进行检查

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接