0

这是一个非常简单的问题,我找不到解决方案:

这是我的代码:

qint32 pos = ui->twShow->verticalScrollBar()->value();
ui->twShow->blockSignals(true);    

//Code for updating the contents QTableWidget twShow, this is done by erasing all cells and adding them again, in case it matters.

ui->twShow->blockSignals(false);
if (pos > 0){
    ui->twShow->verticalScrollBar()->setValue(pos);
}

我想要完成的只是保持垂直滚动位置。但是 setValue 函数忽略值 pos (我通过在指令之前和之后打印值以及两次它的 cero 来检查)。

我也试过: QScrollBar *bar = ui->twShow->verticalScrollBar(); // 和之前一样的代码 ui->twShow->setVerticalScrollBar(bar); //这一行使程序崩溃

但是最后一行使程序崩溃(我已经通过评论检查过它,它工作正常)。

任何建议将不胜感激...

非常感谢

4

2 回答 2

0
 QTableWidget * tw;
 int            desiredRow;

 // before update

 desiredRow = tw->row(tw->itemAt(1,1));

 ...
 // update code
 ...

 tw->scrollToItem( tw->item( desiredRow, 0), 
  QAbstractItemView::EnsureVisible | QAbstractItemView::PositionAtTop );
于 2013-04-23T13:57:54.510 回答
0

QAbstractItemView::EnsureVisible = 0。“或”标志将结果转换为不允许作为 scrollToItem 方法的参数的整数。另一方面,枚举不打算用作组合标志。

于 2017-06-15T06:35:17.917 回答