如何设置QVariant结构?

时间:2017-04-21 08:11:59

标签: c++ qt

我的QList结构包含QVariant

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

为什么我无法使用此功能设置此QVariant

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

错误是:

  

错误:C2678:&#39; =&#39;二进制&#39;:找不到运算符,接受左侧部分

     

类型&#39;的操作const QVariant&#39;没有可接受的转换

如何设置此QVariant?谢谢您的想法。

2 个答案:

答案 0 :(得分:5)

QList<T>::at(int)会返回const T &,您无法分配。

改为使用QList<T>::operator[],返回T &

EP[i].val = value;

答案 1 :(得分:1)

您无法分配,因为QList::at的返回值是const EXTRA_PARAMS,它将常量传播给val成员。

operator[]有一个非常量重载,因此请将.at(i)替换为[i]

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