0

有効な垂直ヘッダー アイテムへのポインターを使用して呼び出す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ですか?

4

1 に答える 1

0

あなたのコードを見ると、あなたが何をしようとしているのか分かりません。

あなたの例では、newRow はテーブル内の行数に初期化されています。これは通常の答えである 4 のようです。

QTableWidget の row() 関数は、指定されたアイテムが表示される行番号を返します。行の垂直ヘッダー項目を指定しているため、-1 が返されます。これは、垂直ヘッダーが行にあるとは見なされないためです。これらは、テーブル ウィジェットの「コンテンツ行」とは別のものです。これは予期される動作です。

于 2013-05-15T22:15:53.903 に答える