2017-04-21 46 views
0

我有一个包含QVariant一个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; 
    } 
} 

的错误是:

error: C2678: '=' binary ': no operator found, accepting a left part

operation of type' const QVariant ' There is no acceptable conversion

我该怎么做才能设置此QVariant?感谢您的想法。

回答

5

QList<T>::at(int)返回一个const T &,你不能指定。

使用QList<T>::operator[]相反,它返回一个T &

EP[i].val = value; 
1

您不能分配,因为QList::at返回值是一个const EXTRA_PARAMS,其传播常量性的val成员。

operator[]具有非const过载,所以用替换.at(i)[i]

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