问题摘要

初学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的调用,有先后优先级,后续的设置会覆盖前面的设置。局部的调用没有被触发。

QML笔记——MouseArea的覆盖区域的更多相关文章

  1. QML学习笔记(八)— QML实现列表侧滑覆盖按钮

    QML实现列表右边滑动删除按钮,并覆盖原有的操作按钮,点击可实现删除当前项 本文链接:QML实现列表侧滑覆盖按钮 作者:狐狸家的鱼 GitHub:八至 列表实现在另一篇博客已经提及,列表可选中.拖拽. ...

  2. 【转载】Java系列笔记(3) - Java 内存区域和GC机制

    Java系列笔记(3) - Java 内存区域和GC机制 转载:原文地址http://www.cnblogs.com/zhguang/p/3257367.html 目录 Java垃圾回收概况 Java ...

  3. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  4. QML中MouseArea元素的介绍

    原文:http://www.thisisqt.com/?action-viewnews-itemid-22 MouseArea元素的一个很典型的用法是和一个可视的item一起用,处理这个item的鼠标 ...

  5. 《深入java虚拟机》读书笔记之Java内存区域

    前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...

  6. 《深入理解Java虚拟机》学习笔记1-内存数据区域

         1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 ...

  7. ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

  8. Opencv2系列学习笔记10(提取连通区域轮廓)

    连通区域指的是二值图像中相连像素组成的形状.而内.外轮廓的概念及opencv1中如何提取二值图像的轮廓见我的这篇博客:http://blog.csdn.net/lu597203933/article/ ...

  9. Opencv2系列学习笔记10(提取连通区域轮廓) 另一个

    http://blog.csdn.net/lu597203933/article/details/17362457 连通区域指的是二值图像中相连像素组成的形状.而内.外轮廓的概念及opencv1中如何 ...

  10. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

随机推荐

  1. 一文读懂 Kubernetes 存储设计

    在 Docker 的设计中,容器内的文件是临时存放的,并且随着容器的删除,容器内部的数据也会一同被清空.不过,我们可以通过在 docker run 启动容器时,使用 --volume/-v 参数来指定 ...

  2. SpringBoot源码学习3——SpringBoot启动流程

    系列文章目录和关于我 一丶前言 在 <SpringBoot源码学习1--SpringBoot自动装配源码解析+Spring如何处理配置类的>中我们学习了SpringBoot自动装配如何实现 ...

  3. angular---嵌套路由

  4. 异常处理的第二种方式-Throwable类中3个异常处理的方式

    异常处理的第二种方式 如果异常出现的话,会立刻终止程序,所以我们得处理异常: 1.该方法不处理,而是声明抛出,由该方法的调用者来处理(throws). 2.在方法中使用try-catch的语句块来处理 ...

  5. P5192 Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流

    我们要做这道题首先先来学习: 无源汇上下界可行流 什么是无源汇上下界可行流 在一张图中,没有s和t,每条边有流量下界和流量上界,流量在这个区间内,求是否存在一种方案在满足流量平衡的情况下,使所有边满足 ...

  6. Typora下载与安装 0.9.75版本

    Typora下载与安装 效果图 一.简介 一款 Markdown 编辑器和阅读器 (0.9.75 版本 不需购买) 二.下载 下载地址:Typora 三.安装 1.下载文件后双击安装 2. 选择存放的 ...

  7. 用ChatGPT来了解ChatGPT

    用ChatGPT来了解ChatGPT 之前学习一个新技术, 想着要搞清楚这6个问题(来自陈皓介绍的学习方法): 1.这个技术出现的背景, 初衷, 要达到什么样的目标或是要解决什么样的问题. 2.这个技 ...

  8. 【KAWAKO】docker暴力上手

    目录 从docker hub拉取镜像 根据镜像创建容器,同时把本地目录挂载到容器 进入容器 停止容器 删除停止的容器 从docker hub拉取镜像 进入docker hub,搜索自己喜欢的镜像. 复 ...

  9. 都在用 AI 生成美少女,而我却。。。

    最近 AI 画画特别的火,你能从网上看到非常多好看的图片,于是我就开始了我的安装之旅,我看到的图是这样的. 这样的. 还有这样的. 然后我就开始了我的 AI 安装生成计划. 安装环境 首先我们需要安装 ...

  10. 3D场景建模零代码平台

    3D场景建模软件(零基础.零代码.**),是指用来制作场景的软件,分为2D建模和3D建模,二者使用的技术及原理不同. 2D软件:它是用3维几何图形绘制出三维图形的软件,其主要功能是利用软件中已经画好的 ...