0

我尝试将 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);

但是在obCmy_list中只包含整数1。有什么问题?

4

1 回答 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);
    ...
于 2014-09-02T14:06:30.660 回答