我试图将一个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。问题是什么?
最佳答案
问题是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);
...
关于c++ - QVariantList附加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25624848/