QML实战:MouseArea的鼠标事件穿透

【Qt QML】QML鼠标事件(MouseArea) QML中的鼠标事件,MouseArea 阅读详情

问题

制作全局的定时器,当没有触摸事件超过一定时间,退出到登录认证页面。在QML中,item之间是相互堆叠的,后面的item在最上层。因此需要将MouseArea放在最上层,以检查鼠标触摸事件,也因此阻挡了下层item接收鼠标点击。

原因

在MouseArea中有个property:propagateComposedEvents,默认是false, 因此阻止了鼠标事件传递。同时在鼠标事件处理中设置mouse.accepted=false, 例: onClicked: { mouse.accepted = false }

解决

MouseArea {
…
propagateComposedEvents: true
…
onClicked: {
mouse.accepted = false
}
onPressed: {
mouse.accpted = false
}
…
}

其中的onPressed是必须要写的,我触摸屏操作时,只对onClicked事件做了设置,下层一直收不到鼠标事件,一度以为该方法无效。如果要透传其它事件,也要相应设置。

相关推荐

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2196

QML鼠标事件传递(鼠标穿透)

有时候,我们的MouseArea区域重叠了,这时候默认是最上层的MouseArea接收鼠标事件,而我们可能需要底层也能接收这个事件。虽然可以关联两个MouseArea的信号,但是这种操作局限性比较大,耦合性太强,某个MouseArea并不能被外部所见等等。在Qt Widgets中可以通过setAttribute(Qt::WA_TransparentForMouseEvents,true...

龚建波 1万+

拥有AI助手便能解放双手?——抖音直播脚本的生成

科技改变生活,AI助手帮你完成抖音创作!

Scientist_的博客 2352

qml坑之鼠标事件传递

相互重叠的MouseArea,通过将顶层(child)的MouseArea.propagateComposedEvents设为true,然后在clicked, doubleClicked, pressAndHold事件处理函数里 写 mouse.accepted = false 可以将事件传递给底层(parent)的MouseArea。对于press、release则可以省去propagateComposedEvents一步,只需要mouse.accepted = false 即可。 像clicked, d

Kelvin_Yan的专栏 1934

企业级AI Agent平台建设方案

本报告将深入剖析构成一个顶级AI Agent平台的各个功能层面,为构建者提供一份全面的战略蓝图。

分享AI和大数据领域的知识和研究 1582

C# 上位机程序中的数据采集与存储技术:从采集到持久化的完整解决方案

本文系统讲解C#上位机程序如何实现设备数据采集与持久化。主要内容包括:1)多种数据采集方式(串口通信、Modbus、OPC等)及代码示例;2)详细对比不同存储技术(CSV、SQLite、关系型数据库等)的优缺点;3)提供SQLite等存储实现代码;4)推荐分层系统架构(采集-缓存-存储-可视化);5)性能优化建议(多线程采集、异步存储、批量写入等)。文章强调应根据项目需求选择合适的技术方案,构建高效稳定的数据采集存储闭环系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1025

qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)

import QtQuick 2.0 Rectangle {  color: “yellow”  width: 100; height: 100 MouseArea { anchors.fill: parent onClicked: console.log("clicked yellow") } Rectangle { color: "

happyrabbit456的专栏 2009

手把手教你学simulink(16.10)-- 基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目

基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目的详细实例介绍。这个项目将重点放在IIR滤波器的设计、实现和仿真上,帮助你理解和应用IIR滤波器在信号处理中的作用。

MHD0815的博客 706

QML---鼠标事件与鼠标事件穿透

qml鼠标事件与穿透

aoiyoru的博客 2803

《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

欢迎大家订阅《Autosar从入门到精通-实战篇》,下方整理了相关博文的目录(单击蓝色字体即可跳转),方便大家获取。 本专栏旨在:扫除Autosar工具链配置过程中的障碍,加深对Autosar理论的理解。 温馨提醒: 如有疑问,可在博文的“评论区”给小编留言,进行技术交流(评论区开启了验证功能,审核通过后,会显示); 如有疑问,也可以通过博文中的第一个图片联系小编,获取专栏/博文的实时状态; 由于工作限制,仅做个人技术交流。添加好友时,请备注您的“姓名-公司-职务...

「汽车电子助手」的博客 12万+

【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换

1 坐标系定义及转换   首先介绍一下世界坐标系和相机坐标系之间的转换,它们之间是存在一个转换关系的。现假设空间中一点X,它在相机坐标系下的坐标是Xcamera,在世界坐标系下的坐标是Xworld。假设它通过R和t实现从相机坐标系到世界坐标系之间的转换: Xworld = RXcamera + t   那么,由上式,我们可以推得从世界坐标系向相机坐标系的转换关系(RT=R-1,所以通常直接使用RT即可): Xcamera = RTXworld - RTt   所以,两个坐标系之间的转换,需要看其具体

zeeq的博客 2万+

QML鼠标事件

如果传播复合事件设置为 true,则组合事件将自动传播到场景中同一位置的其他鼠标区域。每个事件都按堆叠顺序传播到其下方的下一个启用的 MouseArea,向下传播此可视层次结构,直到 MouseArea 接受该事件。与事件不同,如果不存在处理程序,则不会自动接受组合事件。保存组合鼠标事件是否将自动传播到与此鼠标区域重叠但在可视堆叠顺序中较低的其他鼠标区域。默认情况下,此属性为 false。Drag.XAndYAxis 水平和竖直。Drag.YAxis 竖直。Drag.XAxis 水平。

qq_45303986的博客 2169

在Centos上从零开始部署并运行TinyWebServer服务器,过程记录(非常详细)

TinyWebServer是个什么项目?它是Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器。使用线程池+非阻塞socket+epoll(ET和LT均实现) +事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机解析HTTP请求报文,支持解析GET和POST请求访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件实现同步/异步日志系统,记录服务器运行状态。......

AnChenliang_1002的博客 3021

Qml 中的那些坑(四)---MouseArea 的 Click / Hover 事件穿透

【写在前面】 我们在 Qml 中经常会遇到这样的情况: 有某个 Item ( 这里称为 Parent ),需要它在鼠标 Enter 时显示,鼠标 Exit 时隐藏。 这时候我们会用一个 MouseArea,然后处理 onEntered / onExited。 但是,有一个巨大的坑: 如果这个 Item 里嵌入了其他Item ( 这里称为 Child )并且处理自己的 MouseArea,则会导致 Parent Item 的 MouseArea 失效( 即不能接收到相应的事件 )。 本篇主要内..

梦起丶的博客 9007

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

QML MouseArea 鼠标事件详解

MouseArea 的用法介绍!(鼠标事件)

cpp_learner的博客 1573

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Qml MouseArea 事件穿透

项目场景: MouseArea 是 QML 中一个不可见的鼠标操作区域,可响应所有鼠标事件。一般情况下在自定义按钮、自定义需要鼠标交互的区域时使用。有时你只需要它的 hover 通知来做一些事情,而另外的点击等操作需要传递给其下层的控件,这时你就需要忽略其自身的鼠标按下释放等操作让其消息传递到下层了 官方示例: MouseArea propagateComposedEvents属性,默认值为false, 设置为true时,添加一行代码 mouse.accepted = false ,可以传递鼠标事件。鼠标

一个老菜鸟的学习分享 3773

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

qml MouseArea鼠标穿透问题

原文地址::https://blog.youkuaiyun.com/lsylovezsl/article/details/90030607 先来看一段代码: import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls.Styles 1.4 import QtQuick.Controls 1.4 import QtGraphicalEffects 1.0 Window { visible: true width: ...

xqhrs232的专栏 481

Qml学习——鼠标事件处理MouseArea

Qml学习——鼠标事件处理MouseArea

weixin_45001971的博客 872

Qml 鼠标区域事件传递

像clicked, doubleClicked, pressAndHold这些称为composed events(组合事件),而press、release则称为basic events(基本事件)。组合事件由基本事件组成。 正常点击事件顺序 : pressed->released->clicked 其中 clicked是组合事件。 pressed等基本事件,只需要在处理程序中写上mouse.accepted=false就会传递下去, 事件处理函数里 写 mouse.accepted = f

甜筒八部 的专栏 2008

QML MouseArea 鼠标事件高级应用与实战技巧

本文深入探讨了QML中MouseArea组件的高级应用与实战技巧,涵盖鼠标事件处理的核心机制。通过解析事件穿透、多层级交互管理、动态拖拽优化等复杂场景,并结合实战案例,帮助开发者解决实际开发中遇到的交互冲突与性能问题,提升QML界面开发的效率与用户体验。

v4w5x6的博客 260

QML MouseArea 组件详解

QML MouseArea 组件详解:本文全面介绍了QML中处理鼠标交互的核心组件MouseArea。主要内容包括:基本概念与使用场景、核心属性(如enabled、hoverEnabled等)、常用信号处理(点击、悬停等)、高级功能实现(元素拖动、组合事件)。文中提供了完整示例代码,涵盖基础交互到高级视觉效果实现,并针对常见问题(如事件穿透、拖动冲突等)给出解决方案。特别强调了性能优化技巧和移动端适配注意事项,是开发QML交互界面的实用指南。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 1072

Qml中的那些坑(五)---MouseArea上的ListView滚轮事件穿透

最近在 Qml 中使用 MouseArea 时发现了一个奇怪的现象: 位于 MouseArea 上的 ListView 在处理了滚轮事件的情况下进行滚轮,下面的 MouseArea 却在某些情况下接收到了这个事件。 按照直觉,ListView 明明有内部的滚轮事件处理,应该阻止事件向下传递才对,然而此时的情况却出乎意料,因此在此记录并附上解决方案。

梦起丶的博客 2208

【qml阻止事件穿透】MouseArea

通过添加这个 MouseArea,当用户点击 DiagnosisMenu 的空白区域(如图片背景)时,该 MouseArea 会拦截点击事件(mouse.accepted = true),阻止事件继续穿透到下层的 MainMenu 按钮,从而避免误触标定按钮。虽然修改 DiagnosisMenu.qml 已能解决问题,但为了代码的健壮性,建议在 DeviceDiagnosisView.qml 的根 Rectangle 中也确保不发生穿透(如果未来该组件在其他地方被单独使用)。

2301_76682353的博客 68

QML 鼠标穿透

本文介绍了在QML中实现TextField鼠标悬浮变色效果时遇到的问题及解决方法。当使用MouseArea覆盖TextField实现悬浮效果时,会导致输入框无法获取焦点。通过设置propagateComposedEvents: true和onPressed: mouse.accepted = false实现鼠标事件穿透,使TextField既能响应悬浮变色又能正常输入。最终方案还优化了鼠标指针样式,进入时显示文本输入光标,移出时恢复箭头指针,完善了交互体验。

cpp_learner的博客 622

QML MouseArea堆叠时传递组合事件

我们知道mouseX和mouseY是在此MouseArea内部的相对坐标,一个mouseArea使用固然没有问题,但是我发现一旦above传递给beneath后,above接收到的mouseX/Y正确无误但是beneath的mouseX/Y是不对的(假如我们对坐标感兴趣的话)!2方MouseArea各自接受自己的,互不影响。一旦above在onPressed设置mouse.accepted = false,beneath固然能收到pressed和released,但是above只能收到pressed了。

brahmsjiang的专栏 505

【qml】qml 关于鼠标单击事件穿透的问题

结论如下: 如果想要穿透大概有两种方法。 如果跟节点是window,就设置Qt.FramelessWindowHint 如果是Item,就要把上层的mousearea的enable=true 但是,同样穿透的话。上层的mouseArea的released我试了下,好像无法响应。 如果不想穿透,原理反之。 1)enable为false. 2)不设置Qt.FramelessWindowHint 3)在...

qq_43248127的博客 2686
上一篇: 全志A33的vstar板子固件烧写失败
下一篇: 全志A33设置启动时延迟3秒,可进入uboot
turbi
博客等级 码龄21年 0粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值