qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
2016-08-13 15:42
453 查看
import QtQuick 2.0
Rectangle {
color: “yellow”
width: 100; height: 100
}
在帮助文档中,propagateComposedEvents属性,当为true时,可以传递鼠标事件。默认值为false。在设置propagateComposedEvents属性后,点击事件触发后,添加一行代码 mouse.accepted = false ,,鼠标事件即可通过该MouseArea传递到其下层(Mousea之间的关系不一定非要是parent关系),若不加mouse.accepted = false 则设置propagateComposedEvents属性是无效的,以上代码可在Qt帮助文档中看到,由于Mousea组件默认鼠标事件无法传递,故可设置模态和非模态界面
补充下
import QtQuick 2.0
Rectangle {
color: “yellow”
width: 100; height: 100
}
pressed released clicked事件的先后顺序
对于blue进行操作;
注掉pressed和released事件,yellow 只触发了 clicked事件
注掉clicked和released事件,yellow三个事件都触发了
注掉clicked和pressed事件,yellow只触发了released事件
可以看出,pressed信号优先,blue被mouse.accepted = false之后,blue便不可触发信号。
Rectangle {
color: “yellow”
width: 100; height: 100
MouseArea { anchors.fill: parent onClicked: console.log("clicked yellow") } Rectangle { color: "blue" width: 50; height: 50 MouseArea { anchors.fill: parent propagateComposedEvents: true onClicked: { console.log("clicked blue") mouse.accepted = false } } }
}
在帮助文档中,propagateComposedEvents属性,当为true时,可以传递鼠标事件。默认值为false。在设置propagateComposedEvents属性后,点击事件触发后,添加一行代码 mouse.accepted = false ,,鼠标事件即可通过该MouseArea传递到其下层(Mousea之间的关系不一定非要是parent关系),若不加mouse.accepted = false 则设置propagateComposedEvents属性是无效的,以上代码可在Qt帮助文档中看到,由于Mousea组件默认鼠标事件无法传递,故可设置模态和非模态界面
补充下
import QtQuick 2.0
Rectangle {
color: “yellow”
width: 100; height: 100
MouseArea { anchors.fill: parent onClicked: { console.log("clicked yellow"); } onPressed:{ console.log("Pressed yellow") } onReleased:{ console.log("Released yellow"); } } Rectangle { color: "blue" width: 50; height: 50 MouseArea { anchors.fill: parent propagateComposedEvents: true onClicked: { console.log("clicked blue") mouse.accepted = false } onPressed:{ console.log("Pressed blue") mouse.accepted = false; } onReleased:{ console.log("Released blue"); mouse.accepted = false; } } }
}
pressed released clicked事件的先后顺序
对于blue进行操作;
注掉pressed和released事件,yellow 只触发了 clicked事件
注掉clicked和released事件,yellow三个事件都触发了
注掉clicked和pressed事件,yellow只触发了released事件
可以看出,pressed信号优先,blue被mouse.accepted = false之后,blue便不可触发信号。
相关文章推荐
- qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
- 关于Android触摸事件TouchEvent的传递及截取,研究心得。
- 关于双击事件.MouseEvent.DOUBLE_CLICK
- android中TouchEvent事件传递之普通view之间
- QML之MouseArea双击时过滤掉单击事件
- 关于Qt5 QML中Canvas画布叠加区域为透明时,如何传递鼠标事件到下层画布。
- QMouseEvent事件传递
- QML之MouseArea事件
- C#中的delegate和event,WF中传递参数和监听事件会用到
- 关于DIV事件传递的解决方法
- C#中窗体之间的数据传递 ----尤其是事件那个好好看看
- 在Region之间传递Event
- 关于JTree的简单示例的补充,处理TreeSelectionEvent事件!
- 一句话:关于ModuleEvent事件种类
- 关于"Excel._Worksheet和DocEvents_Event之间存在二义性.将使用方法组"的问题
- 关于API函数TrackMouseEvent
- 事件的传递 event 冒泡处理
- [C#]关于 抽象类中的 抽象事件(将子类中的事件内容传递给基类)
- 急需解决------关于在两个窗体之间传递参数的问题
- 委托与事件的简单应用(不同控件之间的控制及参数传递,C# VB)