ListView pixel-accuracy scrolling: How to stop ListView from jumping by entire item when scrolling



  • Hi,

    I want to achieve smooth scrolling with ListView. By "smooth" I mean scrolling that does not jump by an entire list item at a time, which seems to be the default behaviour. To put it in other words, I want the type of scrolling that you get on just about any modern mobile device, where list items can be moved by a fraction of their size (essentially with pixel accuracy), not by a while item.

    To be clear, I know about ListView.NoSnap which allows the list to move by a fraction of an item's size, but what I am unable to achieve is to have partial elements shown at the top / bottom of the ListView when snapMode: ListView.NoSnap is enabled.

    This must be possible, but like pretty much all of QML, useful information is virtually impossible to find....

    Help would be greatly appreciated!


  • Moderators

    Hi @CodaYoda By default the scrolling in ListView is per pixel. Can you post an example where this behavior is defied ?



  • Hi,

    Thank you for the reply. Yes, an example is easy to provide:
    http://doc.qt.io/qt-5/qtquick-tutorials-dynamicview-dynamicview3-example.html

    Please note that my point is not that ListView doesn't scroll per pixel - it does. My point is that the contents of ListView are only shown as entire Items rather than being shown partially as the ListView scrolls (entire items are added / removed from view). This gives the impression that overall scrolling is not per-pixel.


  • Moderators

    @CodaYoda No it is does not completely show entire items when scrolled. If you look carefully you will seen there is a small difference. To test it you can try setting the delegate height to something higher or lower or you can even try mouse drag and scroll.



  • Not sure if I understand what you want, maybe you're looking for:

    clip: true


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.