我正尝试在我的QML-Treeview中使用transientScrollbars。我导入了“ QtQuick.Controls.Styles 1.4”并启用了它们。
如果我使用滚轮,它们会出现。在很短的时间内,当它们可见时,它们会对鼠标悬停事件做出反应。
可以通过在Qt示例的filesystembrowser中的TreeView中添加以下代码行来重现此问题:
import QtQuick.Controls.Styles 1.4
[...]
style: TreeViewStyle {
transientScrollBars: true
}
[...]
这是带有滚动视图的最小示例。
import QtQuick 2.9
import QtQuick.Controls 1.5
import QtQuick.Controls.Styles 1.4
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Scroll")
ScrollView {
width: 200
height: 200
clip: true
style: ScrollViewStyle {
transientScrollBars: true
}
Label {
text: "ABC"
font.pixelSize: 224
}
}
}
如何使此鼠标悬停事件起作用,以显示我的瞬时滚动条?我必须为TreeView使用QtQuick.Controls 1。*。
我看着ScrollViewStyle,但我有点迷路了。作为一种快速的解决方法,我试图添加我的个人鼠标区域来触发用于显示ScrollBar的事件。但是我在ScrollViewStyle上触发了什么以及如何触发它。
编辑: 我找到了一个快速但肮脏的解决方案:
[...]
MouseArea {
height: testView.height
width: 20
anchors.right: testView.right
anchors.top: testView.top
hoverEnabled: true
onEntered: testView.__listView.contentY = testView.__listView.contentY + 0.1
preventStealing: false
propagateComposedEvents: false
}
[...]
通过将__treeView.contentY增加一小部分,treeView不会目视移动,但是transientScrollbars出现在onEntered上。我不喜欢这种解决方案,因为必须有一种方法,可以通过不移动treeView来显示滚动条...