item为空,导致在编译过程、或调用过程中:程序崩溃
坑点:
包含了调用 ui->tableWidget->item(i,j)->text() 语句时,程序崩溃。
原因:
1. 每个单元格需要 setItem方法设置一个QTableWidgetItem,然后你才能调用ui.tableWidget->item(1,1)->text()
否则item(1, 1)返回NULL,调用text()会出错
来源: https://tieba.baidu.com/p/2831070684
2. 如果是没有被编辑过的单元格,将不能用 ui->tableWidget->item(i,j)->text() 访问,因为该指针ui->tableWidget->item(i,j)为空。
解决
1. 在初始化时,全部编辑一遍 item(i,j)
初始化:最好放在 构造函数中执行?
for(int row = 0; row < 4; row++)
{
for(int col = 0; col < 3; col++)
{
if(ui->tableWidget->item(row,col)==nullptr || ui->tableWidget->item(row,col)->text().isEmpty())
{
ui->tableWidget->setItem(row,col,new QTableWidgetItem); // 关键语句 ****
//...
}
}
}
2. 使用下面的语句,进行访问
还不知道是否有其他副作用
ui->tableWidget->model()->index(i, col).data().toString();
参考:
【Qt】将数据导出到csv文件
//写表头
for(i = 0;i < col; i++)
{
out<<model->headerData(i,Qt::Horizontal,Qt::DisplayRole).toString()<<",";
if(i == (col - 1))
{
out<<"\n";
}
}
//写数据
for(i = 0;i < row; i++)
{
for(j = 0;j < col; j++)
{
index = model->index(i,j);
out<<model->data(index).toString()<<",";
if(j == (col - 1))
{
out<<"\n";
}
}
}
————————————————
版权声明:本文为CSDN博主「菜老越」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/spiremoon/article/details/106240222
3.
// 先判断指向该item的指针是否为空 || 判断该item的text是否为空
if(ui->tableWidget->item(i,j)==nullptr || ui->tableWidget->item(i,j)->text().isEmpty())
{
//...
}