题
我有一个图标模式下的 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);
}
希望这有助于问候
不隶属于 StackOverflow