我想在两个重叠的Mouseareas中处理按下和释放的信号。
我的案例简要说明如下:
我有两个鼠标区域M1和M2。 M1包含在一个矩形中,用作按钮。它具有固定的大小,例如100x100。 M2填满整个屏幕,绝对比M1大。我可以任意设置M1和M2的z属性。我需要在这两个Mouseareas中处理按下和释放的信号。
QtQuick有可能,如果可以,怎么样?
import QtQuick 2.5
Item {
visible: true
width:1280
height:720
Rectangle {
color: "blue"
width: 100; height: 100
z:1
MouseArea {
id:m1
anchors.fill: parent
onPressed : {
mouse.accepted = false
console.log("pressed m1")
}
onReleased: {
console.log("released m1")
}
}
}
MouseArea {
id: m2
anchors.fill: parent
onPressed : {
console.log("pressed m2")
}
onReleased: {
console.log("released m2")
}
}
}
我希望在按下并释放m1时按下并释放两个Mouseareas。
(Qt版本5.5)
答案 0 :(得分:1)
在第一个回答中的评论之后。关于这样的事情:
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
width:1280
height:720
Rectangle {
color: "blue"
width: 100; height: 100
z:1
MouseArea {
id:m1
anchors.fill: parent
propagateComposedEvents: true
onPressed : {
mouse.accepted = false
console.log("pressed m1")
}
onReleased: {
console.log("released m1")
}
}
}
MouseArea {
id: m2
anchors.fill: parent
onPressed : {
console.log("pressed m2")
}
onReleased: {
console.log("released m2")
m1.released(mouse);
}
}
}
这打印出你想要的东西。
答案 1 :(得分:0)
首先,MouseArea
不能以大写字母开头,因此M1
不能是M2
和import QtQuick 2.3
Rectangle {
id: root
width: 400
height: 300
Rectangle {
id: m1Container
width: 100
height: 100
color: "blue"
z: 1
MouseArea {
id: m1
anchors.fill: parent
hoverEnabled: true
onPressed: {
mouse.accepted = false
console.log("m1 pressed")
}
onReleased: {
console.log("m1 released")
}
}
}
MouseArea {
id: m2
anchors.fill: parent
onPressed: {
console.log("m2 pressed")
}
onReleased: {
console.log("m2 released")
if(m1.containsMouse) {
m1.released(mouse)
}
}
}
}
。相反,它们必须是m1和m2。
m1.released(mouse)
编辑:我已经从sk2212的答案中借用了m1
的想法,并在鼠标位于openssl_verify_mode: :none
之外时调整了一点来处理这个案例压制和释放。