QT4:是否可以顺利滚动QListView?

时间:2010-01-06 21:18:48

标签: qt qt4 pyqt4

我在图标模式下有一个带有大量图标的QListView,因此会出现一个滚动条,但是滚动不顺畅,这会导致用户感到困惑,因为它会在每次滚动时突然从一个点跳到另一个点。我想使滚动顺利,但我没有在文档中找到任何内容。有可能吗?

3 个答案:

答案 0 :(得分:22)

答案 1 :(得分:11)

如果我理解你的问题,你想重新定义小部件的滚动行为。我想当用户点击滚动箭头(在下面的图像上标记为b)时,列表视图将按项目的高度滚动。

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);
}

希望这有帮助,尊重

答案 2 :(得分:1)

我在ui-> barra_scroll中有一个QlistWidget *,对此我感到很满意。

QScrollBar *qsb = ui->barra_scroll->verticalScrollBar();
qsb->setSingleStep(5);