C++ QVariantList附加

C++ QVariantList附加,c++,qt,qvariant,C++,Qt,Qvariant,我需要将一个QVariant附加到另一个QVariant(必须是QVariantList) QList-listInt; listInt.append(1); qv变异体; v、 设置值(listInt); if(v.canConvert(QVariant::List)) { qv1变异体; v1.设定值(5); qvariant_cast(v).追加(v1); } objC.setProperty(“_list”,v); 但是在obCmy\列表中仅包含整数1。 问题是什么?问题是,qvari

我需要将一个QVariant附加到另一个QVariant(必须是QVariantList)

QList-listInt;
listInt.append(1);
qv变异体;
v、 设置值(listInt);
if(v.canConvert(QVariant::List))
{
qv1变异体;
v1.设定值(5);
qvariant_cast(v).追加(v1);
}
objC.setProperty(“_list”,v);
但是在
obC
my
\列表中
仅包含整数1。
问题是什么?

问题是,
qvariant\u cast
按值返回。因此,通过调用
append()
,您不会更改原始对象,只会更改副本。要使更改保持不变,您必须重置QVariant,例如


好啊对于您的解决方案,我在
\u列表中有两个项目,但项目是相互关联的(它们不是1和5)。这是第一个答案。所以我在这里给大家举了一个有效的例子。在您的计算机上运行它,而不是在ideone中:您的示例很有效,但在开始时,我必须有一个QList,在结束时,我还必须有一个QList(而不是QVariantList)。然后,您可以将QList作为qvariant_cast的类型参数输入,并且您应该返回正确的类型。问题是,当我执行追加时,我不知道类型t,因此只能使用泛型类型。
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);
    ...
    QVariantList toChange = qvariant_cast<QVariantList>(v);
    toChange.append(v1);
    v.setValue(toChange);
    ...
    ...
    QList<int> toChange = qvariant_cast< QList<int> >(v);
    toChange.append(47);
    v.setValue(toChange);
    ...