Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Flickable with Scrollbar Touch Issues



  • I have a Flickable (actually it's a TableView) in QML. Flick gestures and mouse gestures seem to work fine. However, the scrollbar does not seem to respond to touch drag or press events. These same gestures with the mouse seem to work fine with a left click on the background of the scrollbar or a left click and drag on the handle of the scroll bar. My preference is to be able to flick or drag the scrollbar handle at will (no mouse).

     TableView {
            id: eventLogView
            anchors{left: parent.left; leftMargin: 30;
                top: filterInputFields.bottom; topMargin: 10
                right: parent.right; rightMargin: 60;
                bottom: footerSeparator.top
            }
            flickableItem.boundsBehavior: Flickable.StopAtBounds
            flickableItem.synchronousDrag: false
            frameVisible: false
            headerVisible: true
            alternatingRowColors: false
            horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
            verticalScrollBarPolicy: Qt.ScrollBarAlwaysOn
            sortIndicatorColumn: 0
            sortIndicatorOrder: Qt.DescendingOrder
            model: sqlELmodel
    
            ScrollBar.vertical: ScrollBar {
                // Orientation, Position, Size & Active auto-set
                z: 100
                enabled: true
                interactive: true
                minimumSize: 0.10
                width: 10
                snapMode: ScrollBar.SnapAlways
            }
    
            style: TableViewStyle {
                id: tvStyle
    
                decrementControl: Rectangle {
                    width: 0
                    visible: false
                }
                incrementControl: Rectangle {
                    width: 0
                    visible: false
                }
                scrollToClickedPosition: true
                handle: Rectangle {
                    visible: (recNum > 4)
                    implicitWidth: 10
                    radius: width/2
                    color: "#2EA2EC"
                }
                scrollBarBackground: Rectangle {
                    visible: (recNum > 4)
                    width: 10
                    radius: width/2
                    color: "#DBDDDD"
                }
    
                headerDelegate: Rectangle {
    

    Thanks,
    -Rich



  • Here's a one file simple example that shows the problem. I can drag the vertical scrollbar handle with the mouse but not with a touch. I can click in the scrollbar background with the mouse but not with a touch. How does one fix this? It's almost like the ScrollBar is a ScrollIndicator.

    import QtQuick.Window 2.12
    import QtQuick 2.12
    import QtQuick.Controls 1.4
    import QtQuick.Controls 2.5
    import QtQuick.Controls.Styles 1.4
    
    Window {
        width: 641
        height: 480
        visible: true
        title: qsTr("Hello World")
        Rectangle {
            width: 640
            height: 200
            anchors.fill: parent
            TableView {
                id: tv
                horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
                verticalScrollBarPolicy: Qt.ScrollBarAlwaysOn
                TableViewColumn {
                    role: "title"
                    title: "Title"
                    width: 100
                }
                TableViewColumn {
                    role: "author"
                    title: "Author"
                    width: 200
                }
                model: libraryModel1
                style:  TableViewStyle {
                    decrementControl: Rectangle {
                        width: 0
                        visible: false
                    }
                    incrementControl: Rectangle {
                        width: 0
                        visible: false
                    }
                    scrollToClickedPosition: true
                    handle: Rectangle {
                        visible: true
                        implicitWidth: 10
                        radius: width/2
                        color: "#2EA2EC"
                    }
                    scrollBarBackground: Rectangle {
                        visible: true
                        width: 10
                        radius: width/2
                        color: "#DBDDDD"
                    }
                }
    
                ListModel {
                    id: libraryModel1
                    ListElement {
                        title: "A Masterpiece"
                        author: "Gabriel"
                    }
                    ListElement {
                        title: "Brilliance"
                        author: "Jens"
                    }
                    ListElement {
                        title: "Outstanding"
                        author: "Frederik"
                    }
                    ListElement {
                        title: "A Masterpiece"
                        author: "Gabriel"
                    }
                    ListElement {
                        title: "Brilliance"
                        author: "Jens"
                    }
                    ListElement {
                        title: "Outstanding"
                        author: "Frederik"
                    }
                    ListElement {
                        title: "A Masterpiece"
                        author: "Gabriel"
                    }
                    ListElement {
                        title: "Brilliance"
                        author: "Jens"
                    }
                    ListElement {
                        title: "Outstanding"
                        author: "Frederik"
                    }
                }
            }
        }
    }
    
    


  • Submitted to Qt support...response was:

    Thank you for contacting Qt Support,

    If your embedded device uses touch screen, the input for scrollbar is disabled when a touch input is used as it's not really practical and and flicking the view is usually preferred with touch input.

    However, if you attach a mouse to your device the input works for scrollbar is it mainly ignoring the input that is not coming from a genuine mouse, but accepts it when a real mouse is used.

    Does this make sense to you?

    ---------------8<--------------------------------------------
    I read this as for touch a scrollbar is basically a scroll indicator.


Log in to reply