2016-04-27 4 views
0

Ниже мой кусок кода:Как читать данные из QTableWidget?

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, то я получаю следующую ошибку:

Unhandled exception at 0x5463d72c in file.exe: 0xC0000005: Access violation reading location 0x00000000.

Что я делаю неправильно?

ответ

2

Проблема заключается в том:

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

Вы задаете для элемента в строке 100. Так что если нет строки 100, пункт() возвращает nullptr. И это дает вам ошибку, я думаю.

Может быть, вы хотели:

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

Я попробовал один из приведенных выше. Но снова я получил ту же ошибку. –

+0

Я создал Tablewidget, используя конструктор Qt с row = 300 и column = 12. Я могу записать на него данные. Но я получаю ошибку, когда выполняю вышеуказанный код. –

+0

Не могли бы вы сделать ode отрезанным минимальным компилируемым примером? Вы пытались отладить его? Является ли линия, я подозреваю, давая вам ошибку? – Paraboloid87

Смежные вопросы