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