C++ QTableWidget更新项
我在更新QTableWidgetItems时遇到问题。我不明白我做错了什么:( 代码和解释 一步一步解决问题C++ QTableWidget更新项,c++,qt,C++,Qt,我在更新QTableWidgetItems时遇到问题。我不明白我做错了什么:( 代码和解释 一步一步解决问题 首次插入=确定时,将填充所有第一个单元格 更新第一个插入的项目=确定,更新所有第一个单元格 当第二次插入=确定时,所有第二个单元格都已填充 更新第二个插入的项目=确定,更新所有第二个单元格 更新第一个插入的项目=失败,所有第一个单元格都已更新,但下一个单元格的第一个表为空。为什么 代码: void主窗口::fillTable(QList Info) { int Row=ui->clien
void主窗口::fillTable(QList Info)
{
int Row=ui->clientsList->rowCount()-1;//从0开始。
//检查客户端行是否已存在。
对于(int i=Row;i>=0;i--)
{
如果(ui->clientsList->item(i,0)->text()包含(QString(Info[1]))
{
//更新行。
对于(int u=0;uclientsList->setItem(i,u,新的QTableWidgetItem(QString(Info[u+1]));
}
return;//避免插入新行。
}
}
//插入新行。
Row=ui->clientsList->rowCount()+1;
用户界面->客户端列表->设置行数(行);
对于(int i=0;iclientsList->setItem(第1行,i,新的QTableWidgetItem(QString(信息[i+1]));
}
}
还不是完整的解决方案,但很少有评论:
1.管路中可能存在内存泄漏
ui->clientsList->setItem(i, u, new QTableWidgetItem(QString(Info[u + 1])));
为什么不使用
ui->clientsList->item(i, u)->setText(QString(Info[u + 1]));
更安全、更清晰
2.我的理解是,您所依赖的事实是信息的长度与行长度相同,也许值得添加检查?已修复,抱歉!尽管社区也会看到它..我的错误!信息.计数()超过了列,因此它提供了访问冲突。您的示例向我显示,谢谢!:DEven仅将其放入更新行部分,而不是插入新行?如果是,您确定信息列表的长度始终相同-可能会不时更改,这就是您偶尔有空单元格的原因?
ui->clientsList->item(i, u)->setText(QString(Info[u + 1]));