QVariantList追加

时间:2014-09-02 13:40:29

标签: c++ qt qvariant

我要将QVariant附加到另一个QVariant(必须是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 个答案:

答案 0 :(得分: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);
    ...