C++ 如何设置QVariant结构?

C++ 如何设置QVariant结构?,c++,qt,C++,Qt,我有一个QList结构,其中包含一个QVariant: typedef struct EXTRA_PARAMS_DEF { QString name; QVariant val; int channel; } EXTRA_PARAMS; QList<EXTRA_PARAMS> EP; 错误是: 错误:C2678:“=”二进制“:未找到运算符,接受左侧部分 “const QVariant”类型的操作没有可接受的转换 如何设置此QVariant?谢谢你的建议。Q

我有一个
QList
结构,其中包含一个
QVariant

typedef struct EXTRA_PARAMS_DEF {
    QString name;
    QVariant val;
    int channel;
} EXTRA_PARAMS;
QList<EXTRA_PARAMS> EP;
错误是:

错误:C2678:“=”二进制“:未找到运算符,接受左侧部分

“const QVariant”类型的操作没有可接受的转换

如何设置此
QVariant
?谢谢你的建议。

QList::at(int)返回一个
常量T&
,你不能分配给它

改为使用
QList::operator[]
,它返回一个
T&

EP[i].val = value;
QList::at(int)
返回一个
常量T&
,您不能将其分配给它

改为使用
QList::operator[]
,它返回一个
T&

EP[i].val = value;

无法赋值,因为
QList::at
的返回值是一个
const-EXTRA_-PARAMS
,它将constness传播到
val
成员

运算符[]
具有非常量重载,因此将
.at(i)
替换为
[i]

int setParam(QVariant value)
{
    for (int i=0; i<EP.count(); i++)
    {
        EP[i].val = value;
    }
}
int setParam(QVariant值)
{

对于(int i=0;i您无法赋值,因为
QList::at
的返回值是一个
const额外参数
,它将constness传播到
val
成员

运算符[]
具有非常量重载,因此将
.at(i)
替换为
[i]

int setParam(QVariant value)
{
    for (int i=0; i<EP.count(); i++)
    {
        EP[i].val = value;
    }
}
int setParam(QVariant值)
{
对于(int i=0;i