2012-01-02 136 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之後,它解決了嗎?如果您的代碼中使用了這兩種方法,請嘗試刪除它們。