我要将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。
有什么问题?
答案 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); ...