QVariant :: fromValue如何工作?

时间:2017-01-19 18:31:07

标签: c++ qt

我想知道静态方法" fromValue" QVariant的作品,这里是描述:

  

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

该方法有两种不同的行为,具体取决于它是从实例调用还是从静态版本调用?因为使用另一种静态方法的相同原型制作非静态方法是不可能的,所以我不知道如何在方法本身内知道它是如何被调用的。

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

1 个答案:

答案 0 :(得分:0)

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在某些情况下内部使用的构造函数完全相同(有关详细信息,请参阅code)。

正因为如此,我说评论中的@Mat几乎是正确的,你误解了文档。
你应该把它读作:

  

它的行为或多或少类似setValue,但事实上它返回QVariant

有关详细信息,请参阅完整的code