qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
来源:互联网 发布:js控制下拉列表反显 编辑:程序博客网 时间:2024/05/21 17:56
import QtQuick 2.0
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便不可触发信号。
转载:http://blog.csdn.net/xi__q/article/details/52199676
参考:http://stackoverflow.com/questions/23911433/qml-cant-get-mouse-released-event-when-i-dont-accept-mouse-pressed-event
- qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
- qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
- QML的Mouse事件(MouseArea)详解
- QML的Mouse事件(MouseArea)详解
- QML事件处理--MouseArea
- QML之MouseArea事件
- QML中MouseArea元素的介绍
- QML中MouseArea元素的介绍
- QML中MouseArea元素的介绍
- QML中MouseArea元素的介绍
- QML之MouseArea双击时过滤掉单击事件
- 关于多个ViewController之间进行数据传递的方法
- qt4 qml MouseArea
- QML之MouseArea
- qml鼠标事件传递
- 关于Qt5 QML中Canvas画布叠加区域为透明时,如何传递鼠标事件到下层画布。
- QT关于qml的Component事件
- 关于在多个Action之间传递参数
- 【网络编程】利用I/O复用模型实现一个时间同步服务器
- 站上云端,运用与数据分离,负载均衡布局
- app_zh_CN.properties
- HTTP 1.1与HTTP 1.0的比较
- windows任务栏图标出现(2)如何处理
- qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
- mongodb 之 特殊集合及索引
- linux 头文件以及库的路径
- Python面试必须要看的15个问题
- Hive简单创建表及传入数据
- COleDateTime类型的应用
- word-spacing
- IIC总线协议
- 利用IntelliJ IDEA与Maven开始你的Scala之旅