问题摘要

初学QML,今天发现一个奇怪的现象,调用MouseArea的位置不同,结果不同。

1、一个简单的qml示例

Rectangle {
id: root
width: 320
height: 200
Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
}
}

      正常效果如下:  

     

2、  添加MouseArea对象

Rectangle {
id: root
width: 320
height: 200
Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
} MouseArea{
anchors.fill:parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton
onDoubleClicked:{
console.log("DoubleButton");
}
onClicked:{
if(mouse.button == Qt.LeftButton){
console.log("LeftButton");
}else if(mouse.button == Qt.RightButton){
console.log("RightButton");
Qt.quit();
}
}
}
}

    左键点击Quit 按钮没有反应:按钮宽度没有变化,不会输出console.log("Quit");   而输出console.log("LeftButton")。

    

3、调换MouseArea位置:

Rectangle {
id: root
width: 320
height: 200 MouseArea{
anchors.fill:parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton
onDoubleClicked:{
console.log("DoubleButton");
}
onClicked:{
if(mouse.button == Qt.LeftButton){
console.log("LeftButton");
}else if(mouse.button == Qt.RightButton){
console.log("RightButton");
Qt.quit();
}
}
} Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
}
}

    Quit按钮可以正常反应:

  

总结

  MouseArea的调用,有先后优先级,后续的设置会覆盖前面的设置。局部的调用没有被触发。

最新文章

  1. angular2之前端篇—1(node服务器分支)
  2. Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四
  3. 织梦如何重新安装 织梦dir 二次安装
  4. Opera放弃自家内核转投WebKit的背后(转)
  5. Angular系列----AngularJS入门教程02:静态模板(转载)
  6. 三维网格形变算法(Laplacian-Based Deformation)
  7. 菜鸟学Linux命令:chmod命令和数字文件权限
  8. UITextFiled
  9. JavaScript navigator 对象(转)
  10. Hibernate中的一对多关系详解(2)
  11. Linux 下源码安装JDK
  12. 再起航,我的学习笔记之JavaScript设计模式15(组合模式)
  13. mysql分组查询前n条数据
  14. 给定桩号获取纵断面中的高程值(c# for civil3d)
  15. Cortex-M 实现互斥操作的三种方法
  16. 《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)
  17. linux 学习笔记 ftp
  18. <转载> bat 脚本基本语法 http://blog.csdn.net/bluedusk/article/details/1500629
  19. Docker三剑客之Docker Swarm
  20. opencv实现canopy算法

热门文章

  1. [cocos2d-x]registerScriptHandler和registerScriptTapHandler区别
  2. LRU 缓存
  3. C語言成績分析系統
  4. 分布式协议与算法-Paxos算法
  5. 关于v-deep有你想知道的一切
  6. JDK的下载与安装-环境变量的配置
  7. 找了几个 Solon 的商业落地项目案例!
  8. @RestControllerAdvice全局异常统一处理
  9. 快速上手Java开发工具Eclipse之简易手册
  10. rpmbuild时为什么会出现空的debugsourcefiles.list?