2010-01-06 47 views
13

我有一個圖標模式有很多圖標的QListView,以便出現一個滾動條,但滾動不光滑,這個恕我直言混淆了用戶,因爲它在每個滾動中突然從一個點跳轉到另一個點。我想使滾動順暢,但我沒有在文檔中找到任何內容。可能嗎?QT4:是否可以使QListView平滑滾動?

回答

11

如果我正確理解你的問題,你想重新定義窗口小部件的滾動行爲。我猜想會發生什麼事情是,當用戶點擊滾動箭頭(在下面的圖像上標記爲b)時,listview會被項目的高度滾動。

alt text http://qt.nokia.com/doc/4.6/images/qscrollbar-picture.png

對於連接到一個列表視圖垂直滾動條,滾動箭頭通常移動當前位置的一個「線」上升或下降,並通過少量調整滑塊的位置。我相信在這種情況下,它是一個圖標的高度。您可以通過安裝和item delegate(setItemDelegate)並重寫其sizeHint方法來調整項目高度。雖然這不會幫助你解決這個問題。你可以嘗試的是創建一個QListView後代並覆蓋它的updateGeometries方法。在那裏,你可以設置垂直滾動條的步驟爲你想要的值,我猜這個任務是1或2。下面是自定義列表視圖的例子:

class TestListView : public QListView 
{ 
Q_OBJECT 
public: 
    explicit TestListView(QWidget *parent = 0); 

protected: 
    virtual void updateGeometries(); 
}; 

TestListView::TestListView(QWidget *parent) : 
    QListView(parent) 
{ 
    //??? 
} 

void TestListView::updateGeometries() 
{ 
    QListView::updateGeometries(); 
    verticalScrollBar()->setSingleStep(2); 
} 

希望這會有所幫助,至於

+0

有趣。我會盡快嘗試。謝謝! – 2010-01-10 14:07:33

+0

它工作完美,謝謝! – 2010-01-15 21:14:21