我试图将一个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/

10-11 21:00