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

app crashes while assigning QVariant to QVariant

本文关键字:QVariant 崩溃 分配 应用程序      更新时间:2023-10-16

当我调用以下函数时,它崩溃了

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包含非基元值时有区别吗?

你正在做的是创造一个糟糕的QVariant&

QVariantMap不是QVariant,也不能因为它不是从QVariant继承而向下铸造的。

QVariantMap是一个QMap<QString, QVariant>

您可能打算做的是:

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