Search code examples
c++qtqscrollarea

QScroller disable kinetic scrolling


My question is simple. How to disable kinetic scrolling with QScroller. This is my code to use the left mouse button to scroll, without overshoot. I want, when I stop moving the mouse, it stops scrolling.

QScroller::grabGesture(ui->scrollArea->viewport(), QScroller::LeftMouseButtonGesture);
QVariant OvershootPolicy = QVariant::fromValue<QScrollerProperties::OvershootPolicy>(QScrollerProperties::OvershootAlwaysOff);
QScrollerProperties ScrollerProperties = QScroller::scroller(ui->scrollArea->viewport())->scrollerProperties();
ScrollerProperties.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, OvershootPolicy);
ScrollerProperties.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, OvershootPolicy);
QScroller::scroller(ui->scrollArea->viewport())->setScrollerProperties(ScrollerProperties);

Solution

  • It was quite simple in fact.

    ScrollerProperties.setScrollMetric(QScrollerProperties::MaximumVelocity, 0);
    ScrollerProperties.setScrollMetric(QScrollerProperties::MinimumVelocity, 0);