2017-04-21 77 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; 
    } 
}