2016-05-09 11 views
1

QTableWidgetの内部で色をリセットしたいが、i = j = 1のときにメモリ違反エラーが発生する。 col = 3row = 8に注意してください。QTableWidgetメモリ違反

int col= ui->ServiceTableWidg->columnCount(); 
int row=ui->ServiceTableWidg->rowCount(); 

for(int j=0 ; j<row ; j++) 
{ 
    for (int i=0 ; i<col ; i++) 
    { 
     if (ui->ServiceTableWidg->item(i,j) != NULL) 
     { 
      ui->ServiceTableWidg->item(i,j)->setBackground(Qt::white); 
     } 
    } 
} 
+0

最初に行と列の順序を修正します。項目(行、列)を指定します。 –

答えて

0

あなたのQTableWidgetにはアイテムがありません。まず、setItem()メソッドを呼び出すことによってそれらを作成する必要があります。

NULLのチェックが間違っています。たとえば、dynamic_castを使用します。

if(QTableWidgetItem *item = dynamic_cast<QTableWidgetItem *>(ui->tableWidget->item(i, j))) 
    item->setBackground(Qt::black);