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

Posted

技术标签:

【中文标题】如何从 qtablewidget 中的项目中获取文本?【英文标题】:How do I get text from an item in a 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);
            
        
    

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢 MrMallIronmaker!我总是对 item() 和 itemAt() 之间的区别感到困惑,现在我明白了。

以上是关于如何从 qtablewidget 中的项目中获取文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在PyQt QTableWidget中获取seletedIndexes中的项目总和

如何从 QComboBox 中获取所选项目以显示在 PyQt5 的 QTableWidget 中? (QComboBox 有复选框来选择项目)

获取从 QTableWidget 中的单元格小部件发出的信号发送器的行索引

如何从索引列表中选择 QtableWidget 中的单元格

在 QtableWidget 中插入多项

Pyqt如何获取文本为空的QTableWidget项目对象