为什么QVariant::type()返回的是QVariant::Type而不是应该被解释为QMetaType::Type?

4
关于QVariant::type()的文档表示:

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

如果是这样,那么为什么他们没有一开始就将其声明为返回QMetaType :: Type呢?这样似乎只会带来不必要的困惑。

文档并没有解释声明函数返回错误类型的原因,有人知道这些原因吗?


如果你看到这样的东西,很可能与先前的Qt版本或可选的Qt功能的二进制兼容性有关。无论对这个问题的答案是什么,都不会改变你需要适当地转换结果的事实。 - Kuba hasn't forgotten Monica
1个回答

2

首先有 QVariant,它有一个支持类型的 type 枚举。 然后出现了 QMetaType,它有自己的支持类型的 type 枚举。

因此,QVariant 被更改,类型对齐,使其自己的type 枚举可以被弃用,并且它将依赖于 QMetaType 获取类型信息。但是,由于源代码兼容性的原因,返回类型不能被更改。

返回类型可能会在 Qt6 中被更改,但不兼容的更改是根据情况决定的,因此必须讨论更改的影响和好处。


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