2014-06-25 22 views
1

我想突出顯示錶格中第一列中具有相同值的所有單元格,但在任何其他單元格中具有不同的值。因此,舉例來說,如果我有兩個記錄在我的表:如何從qtablewidget中的項目獲取文本?

test, 25, 15, 45 
test, 25, 5, 45  

我想強調的15和5

我曾嘗試下面的代碼中的值,但文本我從一開始無論我正在訪問什麼項目,項目調用總是「測試」。

// Highlight differences in the data 
for(int row=0; row < ui->table_Data->rowCount(); row++) 
{ 
    qDebug() << "going through rows"; 
    for(int remaining_rows=row+1; remaining_rows < ui->table_Data->rowCount(); remaining_rows++) 
    { 
     qDebug() << "going through remaining rows"; 
     for(int column=0; column<ui->table_Data->columnCount(); column++) 
     { 
      qDebug() << "going through columns"; 
      qDebug() << row << ":" << remaining_rows << column; 
      qDebug() << ui->table_Data->itemAt(row,column)->text(); 
      qDebug() << ui->table_Data->itemAt(remaining_rows,column)->text(); 
      if(ui->table_Data->itemAt(row,column)->text().compare(ui->table_Data->itemAt(remaining_rows,column)->text()) != 0) 
      { 
       qDebug() << "data does not match"; 
       ui->table_Data->item(row,column)->setBackground(Qt::yellow); 
       ui->table_Data->item(remaining_rows,column)->setBackground(Qt::yellow); 
      } 
     } 
    } 
} 

回答

3

它看起來像你使用QTableWidget::itemAt時,你應該使用QTableWidget::item

簡而言之,itemAt在像素座標(ax,ay)處找到QTableWidgetItem,而item在指定的行和列處返回QTableWidgetItem。文本總是「測試」,因爲您總是要求表格中的部件非常靠近(0,0),它位於左上角。

+0

謝謝MrMallIronmaker!我總是對item()和itemAt()之間的區別感到困惑,現在我明白了。 –

相關問題