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