QT4: Is it possible to make a QListView scroll smoothly?
我有一个图标模式的 QListView 有很多图标,所以会出现一个滚动条,但滚动不流畅,这个恕我直言,因为它在每次滚动时突然从一个点跳到另一个点,所以让用户感到困惑。我想让滚动平滑,但我在文档中没有找到任何内容。有可能吗?
可能是 QListView.setVerticalScrollMode(QAbstractItemView::ScrollPerPixel)
如果我正确理解您的问题,您想重新定义小部件的滚动行为。我猜发生的情况是,每当用户点击滚动箭头(在下图中标记为 b)时,listview 都会按项目的高度滚动。
对于连接到列表视图的垂直滚动条,滚动箭头通常将当前位置向上或向下移动一"行",并少量调整滑块的位置。我相信在这种情况下它是一个图标的高度。您可以通过安装和项目委托 (setItemDelegate) 并覆盖其 sizeHint 方法来调整项目高度。虽然这不会帮助你解决这个问题。您可以尝试创建一个 QListView 后代并覆盖其 updateGeometries 方法。在那里,您可以将垂直滚动条步骤设置为您想要的值,我猜这个任务是 1 或 2。下面是自定义列表视图的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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); } |
希望这会有所帮助,问候
我在 ui->barra_scroll 中有一个 QlistWidget*,对此我感觉非常流畅。
1 2 | QScrollBar *qsb = ui->barra_scroll->verticalScrollBar(); qsb->setSingleStep(5); |