18

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

4

3 回答 3

28

也许QListView.setVerticalScrollMode ( QAbstractItemView::ScrollPerPixel )

于 2010-01-06T21:51:06.987 回答
12

如果我正确理解您的问题,您想重新定义小部件的滚动行为。我猜发生的情况是,每当用户点击滚动箭头(在下图中标记为 b)时,listview 都会按项目的高度滚动。

替代文字

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

希望这会有所帮助,问候

于 2010-01-10T05:42:18.737 回答
1

我在 ui->barra_scroll 中有一个 QlistWidget*,对此我感觉非常流畅。

QScrollBar *qsb = ui->barra_scroll->verticalScrollBar();
qsb->setSingleStep(5);
于 2020-05-12T16:39:48.737 回答