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