C++ QVariantList附加
我需要将一个QVariant附加到另一个QVariant(必须是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
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);
...