2012-01-02 1653 views
0

我正在根据计时器清除并重新填充QListWidget。每当发生这种情况,列表窗口小部件就会滚动回顶部。我可以找出列表的滚动位置并在添加项目后再次设置它?如何用QListWidget控制滚动条

回答

0

我可以找出列表的滚动位置并在添加项目后再次设置它?

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

+0

你能给予我一些示例代码解释这个东西是很新的QT .. – user1056481 2012-01-02 08:07:58

+0

使用[连接](http://developer.qt.nokia.com/doc/qt-4.8/qobject.html#连接)连接信号。如果您是新手,请从[qt教程](http://doc.qt.nokia.com/4.7/tutorials.html)开始。 (对不起,没有访问编译器和我正在使用的PC上的qt库) – 2012-01-02 08:24:08

+0

所以,我需要创建一个滚动条变量..直到现在滚动条的所有设置都是默认设置.. – user1056481 2012-01-02 08:37:06

5

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

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

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

我试过这个但仍然滚动条移动到顶部 – user1056481 2012-01-02 08:50:08

1

我遇到了同样的问题,每次我改变了列表项的属性,或使用“takeItem”时,滚动条跃升至一定位置靠近顶部。在我将“setLayoutMode”和“setBatchSize”移除到我的QList之后,它解决了吗?如果您的代码中使用了这两种方法,请尝试删除它们。