您应保持父子关系,以便将MouseArea
的移动事件传播到其他MouseArea
重叠且视觉堆叠顺序较低的其他containsMouse
。 *
但是相反的方法是,如果我不想共享移动事件,那么该如何阻止移动信号,所以当子项出现时,父MouseArea不会hoverEnabled: true
(假设两者都有MouseArea
)?
编辑:
以下是一个小示例应用程序,用于说明我在说什么。
基本上,我正在寻找一种外部ma1
(( containsMouse
),当鼠标悬停在内部MouseArea上时,false
等于import QtQuick 2.12
import QtQuick.Controls 2.5
ApplicationWindow{
width: 640
height: 480
visible: true
MouseArea {
id: ma1
anchors.fill: parent
hoverEnabled: true
MouseArea {
anchors.centerIn: parent
width: parent.width * Math.log(2)
height: parent.height * Math.log(2)
hoverEnabled: true
z: 1
// onPositionChanged: mouse.accepted = true;
// onMouseXChanged: mouse.accepted = true;
// onMouseYChanged: mouse.accepted = true;
// onEntered: { ma1.hoverEnabled = false; ma1.enabled = false; }
// onExited: ma1.hoverEnabled = true;
Component.onCompleted: bg.createObject(this, { "hovered": Qt.binding(function() { return containsMouse; }) } );
}
Component.onCompleted: bg.createObject(this, { "hovered": Qt.binding(function() { return containsMouse; }) } );
}
Component {
id: bg
Rectangle {
property bool hovered: false
anchors.fill: parent
color: hovered ? "green" : "red"
border.width: 1
Text {
anchors {
top: parent.top
horizontalCenter: parent.horizontalCenter
}
text: (!parent.hovered ? "un" : "") + "hovered"
color: "white"
}
}
}
}
。
filter_var[speed = 4L]
答案 0 :(得分:0)
实际上,请求的功能应该可以立即使用。每次卡住东西时,尝试从头开始创建一个单独的项目。
看看我为您准备的bit simpler code。这是纯QML。另外,由于所有内容均按逻辑顺序放置-无需提供堆叠顺序(z
参数)。
答案 1 :(得分:0)
因此,根据 Qt支持,在保留两个containsMouse
之间的父子关系的同时,无法使用MouseArea
属性来实现此目的。
...这种情况的解决方法可能会破坏父子 关系或拥有另一个[custom]属性...