如何从QTableWidget中的项获取文本?

3

我想突出显示表格中第一列具有相同值但其他单元格具有不同值的所有单元格。例如,如果我的表格中有两个记录:

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

我希望强调数值15和5。
我尝试了以下代码,但是我从项调用中得到的文本始终是“test”,无论我访问哪个项。
// 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个回答

10

看起来你正在使用 QTableWidget::itemAt,但你应该使用QTableWidget::item

简单地说,itemAt查找像素坐标(ax,ay)处的QTableWidgetItem,而item返回指定行和列的QTableWidgetItem。文本始终为“test”,因为您始终在要求表格中非常靠近(0,0)的小部件,这位于左上角。


1
谢谢MrMallIronmaker!我一直对item()和itemAt()之间的区别感到困惑,现在我明白了。 - Tim Hutchison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接