【问题标题】:How do I get text from an item in a qtablewidget?如何从 qtablewidget 中的项目中获取文本?
【发布时间】:2014-06-25 15:59:27
【问题描述】:

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

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);
            }
        }
    }
}

【问题讨论】:

    标签: c++ qt user-interface qtablewidget


    【解决方案1】:

    您似乎在使用QTableWidget::itemAt,而您应该使用QTableWidget::item

    简单地说,itemAt 在像素坐标 (ax, ay) 处查找 QTableWidgetItem,而item 返回指定行和列处的 QTableWidgetItem。文本始终是“测试”,因为您总是在表格中询问非常接近左上角 (0, 0) 的小部件。

    【讨论】:

    • 谢谢 MrMallIronmaker!我总是对 item() 和 itemAt() 之间的区别感到困惑,现在我明白了。
    猜你喜欢
    • 2023-03-06
    • 2020-06-29
    • 2014-12-05
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多