【问题标题】:Why does QVariant::type() return a QVariant::Type when it should be interpreted as a QMetaType::Type?当 QVariant::type() 应该被解释为 QMetaType::Type 时,为什么它会返回 QVariant::Type?
【发布时间】:2015-08-14 12:02:46
【问题描述】:

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

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

好吧,如果是这样,他们为什么不首先声明它返回QMetaType::Type?这样一来似乎只会带来不必要的混乱。

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

【问题讨论】:

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

标签: c++ qt qvariant


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多