QVariant signed/unsigned 比较

QVariant signed/unsigned comparisons

Qt Framework 的 QVariant 类型提供了比较运算符 <, <=, >, >=,但它们在 signed/unsigned 整数参数不匹配时无法正常工作:

QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false

有谁知道这是一个错误,还是有意为之? 此运算符在 singed/unsigned 不匹配时是否总是 return false?

顺便说一下,我正在使用 Qt 5.6

QVariant(-1) < QVariant(0u) 将调用 intunsigned int 的内置比较器。基本上,(int(-1) < uint(0)) == false(并且 here 解释了原因)。

如果您想要不同的行为,请在使用 toInt() 或类似方法显式比较之前转换值: QVariant(-1).toInt() < QVariant(0u).toInt() == true