QTableWidget::row()行为不符合预期

QTableWidget::row() not behaving as expected

本文关键字:不符合 row QTableWidget      更新时间:2023-10-16

当使用指向有效垂直标头项的指针调用QTableWidget::row( const QTableWidgetItem * item )时,该函数返回-1。但我没有想到这一点,因为我通过调用QTableWidget::setVerticalHeaderItem ( int row, QTableWidgetItem * item )显式地将表小部件中行的垂直标题项设置为指针指向的项。

示例代码:

qint32 newRow = ui->tableWidget->rowCount();
ui->tableWidget->insertRow( newRow );
QTableWidgetItem *vertHeadItem = new QTableWidgetItem( "Row Header" ); 
ui->tableWidget->setVerticalHeaderItem( newRow, vertHeadItem );
     /* these two outputs print the same address, as expected */
// output is 0xb855b90
qDebug() << vertHeadItem;
// output is 0xb855b90
qDebug() << ui->tableWidget->verticalHeaderItem( newRow );
     /* These two outputs are not the same, but I would expect them to be */
// output is "4"
qDebug() << newRow; // this is the row that contains the verticalHeaderItem
// output is "-1"
qDebug() << ui->tableWidget->row( ui->tableWidget->verticalHeaderItem( newRow ) );

为什么使用verticalHeaderItem地址检索行返回-1的无效行?

从你的代码来看,我不确定你想做什么是有意义的。

在您的示例中,newRow被初始化为表中的行数-它似乎是4,这是一个正常的答案。

QTableWidget上的row()函数将返回给定项出现的行号。由于您为行提供了垂直标题项,因此它返回-1,因为垂直标题不被认为是在一行中——它们与表小部件的"内容行"是分开的。