如题,刚接触QT几天,需要用到动态数组,顾以QList来实现,没想到会遇到如下错误提示:
1。passing 'const QList<TDevSubItem>' as 'this' argument of 'void QList<T>::clear() [with T = TDevSubItem]' discards qualifiers
2。passing 'const QList<TDevSubItem>' as 'this' argument of 'void QList<T>::push_back(const T&) [with T = TDevSubItem]' discards qualifiers
结构声明如下:
typedef struct{
QString pCode;
QString pName;
QString pUnit;
}TDevSubItemPara;
typedef struct{
QString dCode;
QString name;
QString icon;
QList<TDevSubItemPara> Para;
}TDevSubItem;
typedef struct{
QString dType;
QString name;
QString icon;
QList<TDevSubItem> SubItem;
}TDevList;
Typedef QList<TDevList> DevList;
实现向QList里存数据:
DevList sysDev;
void DBModule::InitDevList(void)
{
QString tSQL = "";
QSqlQuery QueryResult;
TDevList dl;
TDevSubItem dsi;
//查询设备列表
QueryResult.clear();
tSQL = "select * from dev_type";
QueryResult = dbModule.Query(tSQL);
if(QueryResult.isValid())
{
sysDev.clear();
do {
dl.dType = QueryResult.value(0).toString();
dl.name = QueryResult.value(1).toString();
dl.icon = QueryResult.value(2).toString();
sysDev.push_back(dl);
}while(QueryResult.next());
//测试输出...
#if(DEBUT_FLAGS)
QString name = sysDev.at(0).name;
QString type = sysDev.at(0).dType;
qDebug() << name << type; //把值输出到调试窗口.
#endif
}
//查询某设备的子项
for(int i=0;i<sysDev.size();i++)
{
QueryResult.clear();
tSQL = "select dev_id,dev_name,dev_type_ico from dev_list where dev_type_id = '";
tSQL = tSQL + sysDev.at(i).dType + "' order by dev_id";
QueryResult = dbModule.Query(tSQL);
if(QueryResult.isValid())
{
sysDev.at(i).SubItem.clear(); //错误:1
do {
dsi.dCode = QueryResult.value(0).toString();
dsi.name = QueryResult.value(1).toString();
dsi.icon = QueryResult.value(2).toString();
sysDev.at(i).SubItem.push_back(dsi); //错误:2
}while(QueryResult.next());
//测试输出...
#if(DEBUT_FLAGS)
QString type = sysDev.at(i).SubItem.at(0).dCode;
QString name = sysDev.at(i).SubItem.at(0).name;
qDebug() << name << type; //把值输出到调试窗口.
#endif
}
}
}
小菜很急,忘高手支招!!! 拜谢!