QML TreeView:transientScrollbar不会在鼠标悬停时显示

时间:2019-02-25 07:41:28

标签: qt treeview qml styles scrollbar

我正尝试在我的QML-Treeview中使用transientScrollbars。我导入了“ QtQuick.Controls.Styles 1.4”并启用了它们。

  • 如果我将鼠标悬停在滚动条区域上,则滚动条不会自动显示。
  • 如果我使用QtQuick.Controls 2. *可以正常工作

如果我使用滚轮,它们会出现。在很短的时间内,当它们可见时,它们会对鼠标悬停事件做出反应。

可以通过在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来显示滚动条...

0 个答案:

没有答案