0

我想向 TabView 创建的选项卡添加一个 pressAndHold 处理程序。如果我将这样的处理程序附加到 TabView 从中生成选项卡的组件,则选项卡将不再起作用,因为按下不会到达底层选项卡。设置propagateComposedEvents 没有帮助,因为 press 不是组合事件。我尝试使用计时器滚动我自己的 pressAndHold 系统,并处理按下和释放,但这仍然会阻止按下的信号到达底层选项卡。我尝试在我的新闻处理程序中清除 mouse.accepted,但是我没有得到释放信号,因为 MouseArea 假设如果我不接受新闻,我就不会对它感兴趣。所以我很难过。

一般的问题是:您如何使用 MouseArea 监视所有鼠标信号,并可能添加行为,而不阻止它们通过它下面的任何东西?更有限的问题是:当您无权访问底层鼠标处理程序时,如何将 pressAndHold 添加到已经处理按下和/或单击但不处理 pressAndHold 的东西?

4

1 回答 1

0

希望我以正确的方式理解您的问题。您可以尝试将 TabView 放入 MouseArea。无论如何,这不是最好的解决方案。

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    MouseArea {
        anchors.fill: parent
        onPressAndHold: console.log("press")
        TabView {
            Tab {
                title: "Red"
                Rectangle { color: "red" }
            }
            Tab {
                title: "Blue"
                Rectangle { color: "blue" }
            }
            Tab {
                title: "Green"
                Rectangle { color: "green" }
            }
        }
    }
}
于 2019-01-18T14:37:07.140 回答