我的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
?谢谢您的想法。
答案 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;
}
}