应用程序崩溃时将QVariant分配给QVariant

时间:2014-12-01 13:23:59

标签: c++ qt4

当我调用以下功能时,它会崩溃

void RequestBuilder::setData(QVariant &data)
{
    this->data=data;
}

data包含QVariantMapdata也包含值作为QVariantMap)。 this->data也是QVariant

调用函数时,有一些更多细节。

QVariantMap in,out;
in["name"]="nik";
out["details"]=in;
out["other"]="something";
QVariant param=QVariant(out);
setData(param);

如果我传递包含原始数据类型的地图

,上述功能可以正常工作
QVariantMap abc;
abc["name"]="nik";
QVariant var=QVariant(abc);
setData(var);

QVariantMap包含非原始值时会有区别吗?

1 个答案:

答案 0 :(得分:1)

您正在做的是创建一个错误的QVariant&

QVariantMap不是QVariant也不能归结为一个,因为它不会从QVariant继承。

QVariantMapQMap<QString, QVariant>

你可能打算做的是:

QVariantMap abc;
abc["name"]="nik";
setdata(abc["name"]);