QVariant::fromValue 是如何工作的

How does QVariant::fromValue work?

本文关键字:工作 何工作 fromValue QVariant      更新时间:2023-10-16

我想知道 QVariant 的静态方法"fromValue"是如何工作的,以下是描述:

返回包含值副本的 QVariant。否则的行为与 setValue() 完全相同。

此方法怎么可能有两种不同的行为,具体取决于它是从实例调用还是从其静态版本调用?因为不可能用另一个静态方法的相同原型制作一个非静态方法,而且我不明白你怎么知道它在方法本身中是如何调用的。

我对此很感兴趣,因为我试图为织物方法制作类似的东西。

QVariant::fromValue定义如下:

template<typename T>
static inline QVariant fromValue(const T &value)
{ return qVariantFromValue(value); }

qVariantFromValue如下:

template <typename T>
inline QVariant qVariantFromValue(const T &t)
{ return QVariant(qMetaTypeId<T>(), &t, QTypeInfo<T>::isPointer); }

这与 setValue 在某些情况下内部使用的构造函数完全相同(有关更多详细信息,请参阅代码)。

正因为如此,我会说评论中的@Mat几乎是正确的,你误解了文档。
您应该将其阅读为:

它的行为或多或少像setValue,但因为它返回一个QVariant

有关更多详细信息,请参阅完整代码。