QTableWidget :: row () не работает должным образом

При звонке 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?

0

Решение

Глядя на ваш код, я не уверен, имеет ли смысл то, что вы пытаетесь сделать.

В вашем примере, newRow инициализируется числом строк в вашей таблице, которое, по-видимому, равно 4, что является нормальным ответом.

Функция row () в QTableWidget вернет номер строки, в которой указан данный элемент. Так как вы даете ему элемент вертикального заголовка для своей строки, он возвращает -1, потому что вертикальные заголовки НЕ считаются в строке — они отделены от «строк содержимого» виджета таблицы. Это ожидаемое поведение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]