QML 鼠标穿透

事件:
有一个输入框(TextField),需要实现鼠标悬浮时改变边框颜色,鼠标移出后恢复原来边框颜色;
这时如果需要实现此功能,就得使用到MouseArea,鼠标操作区域填充满整个TextField。
然后实现鼠标移入移入出的修改边框颜色的效果,具体实现代码:

TextField {id: pwdTextFieldwidth: 400height: 40font.pixelSize: height / 2placeholderText: "请输入密码"            // 背景提示文本placeholderTextColor: "#303037"         // 提示文本颜色verticalAlignment: Text.AlignVCenter    // 文本垂直居中anchors.centerIn: parentbackground: Rectangle {anchors.fill: parentradius: pwdTextField.height / 2color: "#CCFFFF"border.width: 1border.color: pwdTextField.focus ? "#FF66FF" : "#222"MouseArea {anchors.fill: parent		// 鼠标区域填充满整个TextFieldhoverEnabled: true			// 启用鼠标悬浮追踪onEntered: {				// 鼠标进入parent.border.color = "#FF66FF"}onExited: {					// 鼠标移出parent.border.color = pwdTextField.focus ? "#FF66FF" : "#222"}}}
}

但是,此时就出现问题了,鼠标区域会覆盖TextField,使得TextField无法输入文本了
在这里插入图片描述
鼠标移入实现边框颜色改变,移出恢复功能确实已经实现了,但是,输入框无法输入文本了…

原因就是设置MouseArea时将TextField给遮住了;

解决问题的方案就是鼠标穿透!将MouseArea的点击事件穿透传给父控件,即TextField;

在MouseArea加入两行代码:

propagateComposedEvents: true     
onPressed: { mouse.accepted = false } 

在这里插入图片描述
代码加上后,运行TextField可以正常输入文本了!

最后再优化一下,鼠标指针进入后,修改一下:

Window {id: rootvisible: truewidth: 600height: 400title: qsTr("Hello World")TextField {id: pwdTextFieldwidth: 400height: 40font.pixelSize: height / 2placeholderText: "请输入密码"            // 背景提示文本placeholderTextColor: "#303037"         // 提示文本颜色verticalAlignment: Text.AlignVCenter    // 文本垂直居中anchors.centerIn: parentbackground: Rectangle {anchors.fill: parentradius: pwdTextField.height / 2color: "#CCFFFF"border.width: 1border.color: pwdTextField.focus ? "#FF66FF" : "#222"MouseArea {anchors.fill: parent        // 填充满父控件hoverEnabled: true// 鼠标穿透,按下事件不接收,传递给父控件propagateComposedEvents: trueonPressed: {mouse.accepted = false}onEntered: {parent.border.color = "#FF66FF"cursorShape = Qt.IBeamCursor}onExited: {parent.border.color = pwdTextField.focus ? "#FF66FF" : "#222"cursorShape = Qt.ArrowCursor}}}}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918218.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR 设备 PCB 怎样凭借高频材料达成高速传输

VR 设备的沉浸式体验依赖于高分辨率图像与低延迟交互,这要求设备内部数据传输速率达到 10Gbps 以上,而印制线路板(PCB)作为信号传输的核心载体,其材料性能直接决定传输效率。高频材料凭借低介电常数(Dk&…

Oracle字段操作

1. 新增字段 -- 新增字段 ALTER TABLE MES.WT_SUPPLEMENT_RECORD ADD (PAR_ATTR3 NUMBER DEFAULT NULL);2. 修改字段类型 -- 修改字段类型 ALTER TABLE MES.WT_SUPPLEMENT_RECORD MODIFY (PAR_ATTR3 VARCHAR2(32));3. 删除字段 -- 删除字段 ALTER TABLE MES.WT_SUPPLEMENT_RECO…

【原创】基于 Flask 的简单文件收集器

在单位内网环境中,我经常需要收集 pdf 格式的记录表。于是我基于 ai ide,开发了一个基于 Flask 开发的轻量级文件上传服务项目,部署在单位飞腾芯的银河麒麟系统上(当然由于 python 的跨平台,在 windows 和 mac 上也可部…

学习Java的Day28

今天在昨天完成的留言板项目基础上,我进一步开发了一个酒店房型管理系统。该系统采用MVC架构,主要功能是对酒店房型信息进行增删改查操作。数据库设计方面,我创建了hotel_room_type表,包含以下字段:id:主键…

Leetcode——556. 下一个更大元素 III

题目链接:556. 下一个更大元素 III (由于图片上传失败,不贴原题目了,有需要可以前往力扣查看) 本文给出该题的单调栈做法,同时绕过所有库函数,所有逻辑均自行实现。 本题的思路就是从右向左按…

Idea打包可执行jar,MANIFEST.MF文件没有Main-Class属性:找不到或无法加载主类

背景:IDEA传统方法【Project structure】-->artifact---->build的模式,打包【Maven】项目,发现生成的可执行jar包,显示【找不到或无法加载主类】。但是用【Maven】的Assembly可以正常生成。期望用传统方法实现打jar包方法&a…

检索增强生成:RAG(Retrieval Augmented Generation)

什么是 RAG?为什么使用 RAG?LLM 微调 和 RAG?实战什么是 RAG? RAG 在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中被引入,原论文是这样描述的: 探索了一种 通用的 检索增…

Android 设置/修改系统NTP服务地址

Android 手机的 NTP 时间同步(网络时间同步)主要依赖网络,但系统时间来源还包括其他方式,整体时间校准机制是多种来源的结合。具体可分为以下几类: 1. 网络 NTP 同步(最主要方式) 这是 Androi…

Ubuntu22.04 安装vitis2023.2 卡在“Generating installed device list“.

关于这个问题,xilinx有官方说明,链接 原因:问题是 Ubuntu 20.04 缺少 libtinfo.so.5 库。 解决办法: sudo apt-get install libtinfo5

前端全栈修炼手册:从 Vue3 到工程化的进阶之路

本文将全方位覆盖前端开发的核心知识,从 Vue3 框架的基础语法到复杂的工程化实践,从包管理工具的使用到模块规范的深入理解,带你踏上从入门到精通的进阶之路。 Vue3 框架:新时代前端开发的基石 Vue3 核心语法探秘 Vue3 作为目前…

Jetpack Compose 常用控件

Jetpack Compose 常用控件一、基础展示控件:呈现静态内容二、交互控件:响应用户操作三、列表与网格控件:展示大量数据四、导航与标签控件:组织页面结构五、反馈控件:提示与加载状态六、布局控件:组织 UI 结…

Android适配最新SplashScreen方案:让启动页不再“翻车“

Android适配最新SplashScreen方案:让启动页不再"翻车" 各位开发者大佬们,最近是不是又被Android的SplashScreen适配搞得焦头烂额?别慌,今天咱们就来聊聊这个让人又爱又恨的启动页适配方案,保证让你笑出腹肌的同时,还能把技术要点牢牢掌握![6][7][9][10] 一、…

【自动驾驶】《Sparse4Dv3》代码学习笔记

这里时间比较有限,优先看Sparse4Dv3方法里面相对以前改动的地方。 0.参考 代码v1/v2/v3:https://github.com/HorizonRobotics/Sparse4D 跑起来:https://github.com/HorizonRobotics/Sparse4D/blob/v3.0/docs/quick_start.md 1.方法 (1&a…

「ECG信号处理——(22)Pan-Tompkins Findpeak 阈值检测 差分阈值算法——三种R波检测算法对比分析」2025年8月8日

目录 1、引言 2、算法原理 (1)Pan-Tompkins 算法(方法1) (2)Findpeak 阈值检测算法(方法2) (3)差分阈值算法(方法3) 3、算法性能…

Qdrant Filtering:must / should / must_not 全解析(含 Python 实操)

在向量搜索中,过滤(Filtering) 是保证结果精准性和业务契合度的关键手段。Qdrant 的过滤机制不仅能在向量相似度检索的基础上叠加结构化条件,还提供了灵活的布尔逻辑组合,让我们可以像写数据库查询一样,精准…

五、RuoYi-Cloud-Plus 前端项目部署以及如何改后端请求地址。

1.前情描述 前面的文章我们介绍了RuoYi-Cloud-Plus的nocos的配置内容,已经启动其他服务要注意什么东西。 专栏内容在这,感兴趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.前端项目部署。 官网地址:plus…

工作量评估

工作量评估 API 工作量评估: 得分 入参个数 * 0.2 业务规则 * 0.5 改动的库表个数 * 0.3 得分(1-2):简单API-5人天 得分(3-8):中等API-8人天 得分(8-15):复…

篮球运动(动态规划)

题目描述小明建造了一个篮球场,他请来了2行n列的人,想让他们进行比赛。每一个人都有一个能力值,第一行分别为h11,h12,…,h1n,第二行为h21,h22,…,h2n。现在小…

区块链与大数据分析技术深度解析

目录 区块链与大数据分析技术深度解析 1. 引言:当区块链遇见大数据 2. 区块链数据特性 2.1 数据结构差异 2.2 区块链数据层级 3. 数据获取技术 3.1 节点直连方案 3.2 链上数据湖架构 4. 数据分析关键技术 4.1 交易图谱分析 4.2 地址聚类算法 5. 链上分析应用场景 5.1 反洗钱(A…

网络基础——网络层级

OSI七层模型OSI七层模型名称功能协议应用层直接为用户应用程序(如浏览器、邮件客户端)提供网络服务接口。HTTP/HTTPS(网页浏览)FTP(文件传输)SMTP/POP3(邮件)DNS(域名解析…