如何从QTableWidget读取数据?

时间:2016-04-27 13:49:25

标签: qt

以下是我的代码:

QString fileName = appData + GROUND_DATALOG_DIR + "AISTABLE";
fileName = fileName + d_local.toString("_yyyy-MM-dd") + t_local.toString("_HH-mm-ss") + ".csv";
f_out = fopen(fileName.toAscii().data(), "wb+");
if (f_out == NULL) {
    return;
}

QString headerString = "MMSI, Vessel_Name, Longitude, Latitude , Type, Navigation, SOG, COG, True_Heading, IMO, Call_Sign, Ship_Type\r\n";

for(int row = 0;row <ui->tableWidget->rowCount()-1; row++)
{
    for(int column = 0;column< ui->tableWidget->columnCount()-1 ;column++)
    {
        headerString += ui->tableWidget->item(100,5)->text() +",";
    }
    headerString += "\r\n";
}
fprintf(f_out,"%s",headerString.toAscii().data());
fflush(f_out);
fclose(f_out);

当我执行项目行和列值小于100的程序时,我得到输出。但如果该值超过100,则会出现以下错误:

  

file.exe中0x5463d72c处的未处理异常:0xC0000005:访问冲突读取位置0x00000000。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是:

    headerString += ui->tableWidget->item(100,5)->text() +",";

您要求第100行中的项目。因此,如果没有第100行,则item()返回nullptr。我想这就是错误。

也许你想要:

    headerString += ui->tableWidget->item(row,column)->text() +",";