鼠标滚轮的QML ScrollBar / ListView灵敏度。如何调整

时间:2017-12-06 15:53:09

标签: qt qml qtquick2 qt5.9

有QML控件ScrollBar,鼠标滚轮快速滚动列表,我需要执行此操作较慢。可以使用哪些属性?

Qt 5.9

这是一个例子(来自Qt工具包的rssnews示例项目):

...
ListView {
    id: categories
    property int itemWidth: 190


    width: isPortrait ? parent.width : itemWidth
    height: isPortrait ? itemWidth : parent.height
    orientation: isPortrait ? ListView.Horizontal : ListView.Vertical
    anchors.top: parent.top
    model: rssFeeds
    delegate: CategoryDelegate { itemSize: categories.itemWidth }
    spacing: 3
}

ScrollBar {
    id: listScrollBar

    orientation: isPortrait ? Qt.Horizontal : Qt.Vertical
    height: isPortrait ? 8 : categories.height;
    width: isPortrait ? categories.width : 8
    scrollArea: categories;

    anchors.right: categories.right
}
...

我在ScrollView看到了这个:

/*! \internal */
property alias __wheelAreaScrollSpeed: wheelArea.scrollSpeed

但是我的案例找不到scrollSpeed属性......

2 个答案:

答案 0 :(得分:2)

我不认为ScrollBar是让事情变得疯狂的原因。它是Flickable的基类ListView

您拥有属性:maximumFlickVelocity,位于像素/秒

尝试将其设置为适当的值。

  

这也会影响轻弹行为!

如果是ScrollBar,您可以尝试使用该属性:stepSize - 将其设置为小于0.1的值。我没有Qt5.9,所以我无法尝试。我不相信这是原因。

在最糟糕的情况下,在整个事物的上面加MouseArea,它不接受任何按钮,但处理onWheel

MouseArea {
    anchors.fill: parent
    acceptedButtons: Qt.NoButton
    //onWheel: manage the scrolling yourself, here.
}

答案 1 :(得分:0)

将ListArea(如提到的derM)包装在ListView之上是我的解决方案。现在,ListView会对鼠标滚轮做出反应。

MouseArea {
    anchors.fill: parent
    ListView {
        id: lv
        anchors.fill: parent
        delegate: ...
        ScrollBar.vertical: ScrollBar {
            parent: lv.parent
            anchors.top: lv.top
            anchors.left: lv.right
            anchors.bottom: lv.bottom
        }
    }
}