2017-01-19 28 views
-1

我想知道如何靜態方法「fromValue」的作品的QVariant,這裏是說明:QVariant :: fromValue如何工作?

返回包含的值的副本的QVariant。行爲完全像setValue(),否則。

這種方法有兩種不同的行爲,這取決於它是從一個實例還是從它的靜態版本中調用,這怎麼可能?因爲用另一種靜態方法的相同原型製作非靜態方法是不可能的,我不知道如何知道它是如何在方法本身內調用的。

我對此感興趣,因爲我試圖爲織物方法做類似的事情。

+2

你誤解了文字。你引用的意思是「它的行爲完全像setValue,只是它返回一個QVariant ....」。 – Mat

回答

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瞭解更多詳情。

相關問題