QML ScrollBar/ListView 鼠标滚轮的灵敏度。如何调整
QML ScrollBar/ListView sensitivity for mouse wheel. How to adjust
有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 属性...
我不认为 ScrollBar
是让事情变得疯狂的原因。 Flickable
是 ListView
的基础 class。
你有 属性: maximumFlickVelocity
以 像素/秒 .
尝试将其设置为适当的值。
This will also affect the flicking behavior!
如果是 ScrollBar
,您可以尝试 属性:stepSize
- 将其设置为小于 0.1
的值。我没有Qt5.9所以没法试。我不相信这是原因。
在最坏的情况下,在整个事物之上层 MouseArea
,它不接受任何按钮,但处理 onWheel
:
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton
//onWheel: manage the scrolling yourself, here.
}
在 ListView 之上包裹一个 MouseArea(如提到的 derM)是我的解决方案。现在 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
}
}
}
有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 属性...
我不认为 ScrollBar
是让事情变得疯狂的原因。 Flickable
是 ListView
的基础 class。
你有 属性: maximumFlickVelocity
以 像素/秒 .
尝试将其设置为适当的值。
This will also affect the flicking behavior!
如果是 ScrollBar
,您可以尝试 属性:stepSize
- 将其设置为小于 0.1
的值。我没有Qt5.9所以没法试。我不相信这是原因。
在最坏的情况下,在整个事物之上层 MouseArea
,它不接受任何按钮,但处理 onWheel
:
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton
//onWheel: manage the scrolling yourself, here.
}
在 ListView 之上包裹一个 MouseArea(如提到的 derM)是我的解决方案。现在 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
}
}
}