如何从qtablewidget中的项目获取文本?

时间:2014-06-25 15:59:28

标签: c++ qt user-interface 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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:4)

当您使用QTableWidget::itemAt时,您似乎正在使用QTableWidget::item

简单地说,itemAt在像素坐标(ax,ay)处找到QTableWidgetItem,而item在指定的行和列处返回QTableWidgetItem。文本总是&#34;测试&#34;因为你总是要求表格中的小部件非常靠近(0,0),它位于左上角。