QML笔记——MouseArea的覆盖区域
问题摘要:
初学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的覆盖区域的更多相关文章
- QML学习笔记(八)— QML实现列表侧滑覆盖按钮
QML实现列表右边滑动删除按钮,并覆盖原有的操作按钮,点击可实现删除当前项 本文链接:QML实现列表侧滑覆盖按钮 作者:狐狸家的鱼 GitHub:八至 列表实现在另一篇博客已经提及,列表可选中.拖拽. ...
- 【转载】Java系列笔记(3) - Java 内存区域和GC机制
Java系列笔记(3) - Java 内存区域和GC机制 转载:原文地址http://www.cnblogs.com/zhguang/p/3257367.html 目录 Java垃圾回收概况 Java ...
- Java系列笔记(3) - Java 内存区域和GC机制
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...
- QML中MouseArea元素的介绍
原文:http://www.thisisqt.com/?action-viewnews-itemid-22 MouseArea元素的一个很典型的用法是和一个可视的item一起用,处理这个item的鼠标 ...
- 《深入java虚拟机》读书笔记之Java内存区域
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...
- 《深入理解Java虚拟机》学习笔记1-内存数据区域
1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 ...
- ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- Opencv2系列学习笔记10(提取连通区域轮廓)
连通区域指的是二值图像中相连像素组成的形状.而内.外轮廓的概念及opencv1中如何提取二值图像的轮廓见我的这篇博客:http://blog.csdn.net/lu597203933/article/ ...
- Opencv2系列学习笔记10(提取连通区域轮廓) 另一个
http://blog.csdn.net/lu597203933/article/details/17362457 连通区域指的是二值图像中相连像素组成的形状.而内.外轮廓的概念及opencv1中如何 ...
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
随机推荐
- HashMap存储自定义类型键值-Linked Hash集合
HashMap存储自定义类型键值 练习∶每位学生(姓名,年龄)都有自己的家庭住址.那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中.学生作为键,家庭住址作为值.注意,学生姓名相同并且年龄 ...
- Unity_UIWidgets - 文字图标Icon
Unity_UIWidgets - 文字图标Icon 文字图标Icon 开篇 不吐不快的废话 正题 主题Icon 获取Icon 第一步 第二步 第三步 使用Icon 1.导入至Resources文件夹 ...
- KingbaseES函数三态
理解函数的三态1 VOLATILE: volatile函数没有限制,可以修改数据(如执行delete,insert,update), 使用同样的参数调用可能返回不同的值. STABLE: 不允许修改数 ...
- ChatGPT 背后核心技术的白话版
本文是关于ChatGPT 背后核心技术实现的一个通俗白话版,不涉及到的AI具体实现的技术细节哦. 在编排上增加了一些分割,内容具体如下: LLMs(大型语言模型) 如果将ChatGPT比作是动物,它就 ...
- LeetCode_387. 字符串中的第一个唯一字符
写在前面 原文地址:https://leetcode.cn/problems/first-unique-character-in-a-string/ 难度:简单 题目 给定一个字符串 s ,找到 它的 ...
- 一次代码重构 JavaScript 图连通性判定
简介 说重构其实就是整理了代码,第一次自己手写写的很丑,然后看了书上写的,虽然和书上的思路不同但是整理后几乎一样漂亮 效果 整体代码如下 class Node { AdjNodes = new Set ...
- LinkedHashmap简要说明
https://segmentfault.com/a/1190000012964859 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 H ...
- .net core 读取配置文件的几种方式
一.Json配置文件 1.这里的配置文件指的是下图 2.json配置文件示例 { "Logging": { "LogLevel": { "Defaul ...
- Fiegn 声明式接口调用
五:Fiegn 声明式接口调用 什么是Fiegn Netfix,Fiegn 是一个提供模板式的Web Service客户端,使用Fiegn 可以简化Web Service 客户端的编写,开发者可以通过 ...
- JAVA 进阶第一阶段 59-69
10/10号笔记 私有与公共 用private在类中定义的成员变量 只有在这个类的内部才支持访问和编写 public 公共的 用这个定义的在任何地方都可以访问 比如public calss clock ...