如何使用QListWidget控制滚动条

时间:2012-01-02 06:50:51

标签: qt

我正在清理并根据计时器重新填充QListWidget。每次发生这种情况时,列表小部件都会滚动回到顶部。我可以找到列表的滚动位置并在添加项目后重新设置吗?

3 个答案:

答案 0 :(得分:6)

QListWidget也是QAbstractScrollArea。它有一个水平滚动条和一个垂直滚动条,您可以使用QAbstractScrollArea::horizontalScrollBar()QAbstractSrollArea::verticalScrollBar()获取它们。两者都返回QScrollBar

要手动设置滚动条的值,您可以:

QScrollBar *vb = listWidget->verticalScrollBar();
int oldValue = vb->value();
//doSomething()
vb->setValue(oldValue);

答案 1 :(得分:1)

我遇到了同样的问题,每当我更改列表项的属性或使用" takeItem"时,滚动条跳到顶部附近的某个位置。它在我删除" setLayoutMode"后解决了。和" setBatchSize"到我的QList?如果您的代码中使用了这两种方法,请尝试删除它们。

答案 2 :(得分:0)

  

我可以找到列表的滚动位置并在添加项目后重新设置吗?

可以使用currentRow property来获取/设置当前行。最好订阅currentRowChanged signal