我有一个图标模式下的 QListView,其中有很多图标,因此会出现滚动条,但滚动不平滑,恕我直言,这会让用户感到困惑,因为它在每次滚动时都会突然从一个点跳到另一个点。我想让滚动平滑,但我在文档中没有找到任何内容。是否可以?

有帮助吗?

解决方案

如果我正确地理解你的问题,你想重新定义窗口小部件的滚动行为。我猜会发生什么是列表视图是越来越按项目的高度,每当用户点击滚动箭头(标记为B下面的图片)滚动。

替代文字http://qt.nokia.com/doc/ 4.6 /图像/ qscrollbar-picture.png

有关连接到一个列表视图垂直滚动条,滚动箭头通常移动当前位置的一个“线”上升或下降,并通过少量调整滑块的位置。我相信,在这种情况下,它是一个图标的高度线。您可以通过安装和项目委托(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);
}

希望这有助于问候

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top