C++ 为什么QVariant::type()在应解释为QMetaType::type时返回QVariant::type?

C++ 为什么QVariant::type()在应解释为QMetaType::type时返回QVariant::type?,c++,qt,qvariant,C++,Qt,Qvariant,有关文件说: 返回变量中存储的值的存储类型。尽管此函数被声明为返回QVariant::Type,但返回值应解释为QMetaType::Type。特别是,只有当值等于或大于QMetaType::User时,才会在此处返回QVariant::UserType 那么,如果是这样的话,他们为什么不首先声明它返回QMetaType::Type?这样看来只会带来不必要的混乱 文档没有解释声明函数以返回错误类型的原因,有人知道这些原因可能是什么吗?首先,支持类型的QVariant带有类型枚举。 然后出现了QM

有关文件说:

返回变量中存储的值的存储类型。尽管此函数被声明为返回QVariant::Type,但返回值应解释为QMetaType::Type。特别是,只有当值等于或大于QMetaType::User时,才会在此处返回QVariant::UserType

那么,如果是这样的话,他们为什么不首先声明它返回
QMetaType::Type
?这样看来只会带来不必要的混乱


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

首先,支持类型的QVariant带有
类型
枚举。 然后出现了QMetaType,它有自己的
type
enum,用于支持的类型

因此QVariant被更改,类型对齐,因此它自己的
type
enum可能会被弃用,并且它将依赖QMetaType获取类型信息。但是,由于源兼容性原因,无法更改返回类型


Qt6的返回类型可能会更改,但源不兼容的更改取决于具体情况,因此必须讨论更改的影响和好处。

如果您看到类似的情况,可能与先前Qt版本或可选Qt功能的二进制兼容性有关。无论这个问题的答案是什么,它都不会改变你需要适当地转换结果的事实。