如何在QTableWidget中保持垂直滚动位置

时间:2013-04-23 13:27:12

标签: qt scrollbar

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

这是我的代码:

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(巴); //此行崩溃了程序

然而,最后一行崩溃了程序(我通过评论来检查它,它运行正常)。

非常感谢任何建议......

非常感谢

2 个答案:

答案 0 :(得分: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 );

答案 1 :(得分:0)

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