为什么QVariant :: type()在应该被解释为QMetaType :: Type时返回一个QVariant :: Type?

时间:2015-08-14 12:02:47

标签: c++ qt qvariant

关于QVariant::type()的文档说:

  

返回变体中存储的值的存储类型。虽然此函数声明为返回QVariant :: Type,但的返回值应解释为QMetaType :: Type 。特别是,仅当值等于或大于QMetaType :: User时才返回QVariant :: UserType。

那么,如果是这样,他们为什么不首先宣布它为QMetaType::Type?这样看起来只会带来不必要的混乱。

文档没有解释声明函数返回错误类型的原因,是否有人知道这些原因可能是什么?

1 个答案:

答案 0 :(得分:1)

首先,对于支持的类型,QVariant带有type枚举。 然后QMetaType带有自己的type枚举,用于支持的类型。

因此更改了QVariant,类型对齐,因此可以弃用其自己的type枚举,并且它将依赖于QMetaType来获取类型信息。但是,出于源兼容性原因,无法更改返回类型。

可能会针对Qt6更改返回类型,但源代码不兼容的更改将根据具体情况决定,因此必须讨论更改的影响和好处。