2010-01-06 20 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