2014-09-02 23 views
0

我至三追加一個的QVariant到另一個的QVariant(它必須是一個QVariantList)。QVariantList追加

QList<int> listInt; 
listInt.append(1);  
QVariant v; 
v.setValue(listInt); 
if(v.canConvert(QVariant::List)) 
{ 
    QVariant v1; 
    v1.setValue(5); 
    qvariant_cast<QVariantList>(v).append(v1); 
} 
objC.setProperty("_list", v); 

但在obC_list只包含整數1 問題是什麼?

回答

1

的問題是,該qvariant_cast<>返回的值。所以你打電話給append()你並沒有改變原來的對象,而只是複製。要進行更改,您必須重置QVariant,例如

... 
    QVariantList toChange = qvariant_cast<QVariantList>(v); 
    toChange.append(v1); 
    v.setValue(toChange); 
    ... 

,或者使用的QList<int>代替QVariantList

... 
    QList<int> toChange = qvariant_cast< QList<int> >(v); 
    toChange.append(47); 
    v.setValue(toChange); 
    ... 
+0

確定。使用你的解決方案,我在'_list'中有兩個項目,但是項目已被corrumpted(不是1和5) – artoon 2014-09-02 14:11:14

+1

此答案是第一個。所以我只是在這裏給你一個工作的例子。它運行在您的計算機上,而不是在ideone:http://ideone.com/nv9wYN – Ezee 2014-09-02 14:23:38

+0

你的榜樣工作,但在開始時,我必須有一個的QList 並在結束我也必須有一個的QList (而不是QVariantList)。 – artoon 2014-09-02 14:33:17