如果你需要实现鼠标穿透功能,类似“隔空取物、隔山打牛”的效果。那么你一定要了解一下这个属性 Qt::WA_TransparentForMouseEvents

Qt 助手对其的描述如下:

When enabled, this attribute disables the delivery of mouse events to the widget and its children. Mouse events are delivered to other widgets as if the widget and its children were not present in the widget hierarchy; mouse clicks and other events effectively “pass through” them. This attribute is disabled by default.

借助在线翻译(https://www.deepl.com/translator),中文翻译过来的意思是:

启用后,此属性将禁止向小组件及其子件传递鼠标事件。鼠标事件被传递给其他小组件,就像小组件及其子代不存在于小组件层次结构中一样;鼠标点击和其他事件有效地 "穿过 "它们。这个属性在默认情况下是禁用的。

用法如下:

theButton->setAttribute(Qt::WA_TransparentForMouseEvents, true);

当前窗口透明区域不响应鼠标事件

//
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
setAttribute(Qt::WA_TranslucentBackground, true);

如果当前窗口不透明,但又需要实现鼠标穿透,要注意代码先后顺序

// 一定要先设置鼠标穿透,否则无法穿透
setAttribute(Qt::WA_TransparentForMouseEvents, true);setWindowFlag(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground, true);

其他应用场景举例:
1、禁止响应鼠标的点击事件,但是需要响应代码层面的信号
2、如果有需要,相比较于设置控件的可用性,设置属性的做法更为隐蔽
3、有些透明窗体(或者异形界面)允许鼠标可以在本窗口界面操作背后的窗口

Qt::WA_TransparentForMouseEvents 了解一下相关推荐

  1. Qt::WA_TransparentForMouseEvents用法

    Qt助手中对Qt::WA_TransparentForMouseEvents的解释如下: When enabled, this attribute disables the delivery of m ...

  2. qt下设置按钮不接收键盘鼠标但能响应 clicked()信号

    最近有个需求:在业务开始时,线程自动向每个按钮发送clicked()信号,按钮接收到该信号后,执行该信号,从而模拟人单击按钮,但整个过程按钮不能接收键盘鼠标事件,防止人干扰线程自动模拟按钮的执行.首先 ...

  3. Qt之QAbstractItemView视图项拖拽(二)

    一.需求说明 上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式,是基于QDrag实现的,这个类是qt自己封装好了的,所 ...

  4. Qt ApplicationAttribute/WidgetAttribute 程序级别属性

       Qt 不是开发语言,没有所谓的谁厉害.对于Qt本身来说老鸟跟新手区别只是谁遇到的问题更多.当然衡量Qter的水平主要还是看c++的水平. Qt ApplicationAttribute/Widg ...

  5. Qt实现屏幕中间显示小点,打游戏瞬狙,你还在屏幕中间贴红点吗?

    打游戏瞬狙的时候,觉得屏幕中间如果有一个红点就好了,猛然间意识到,我可是学过Qt的人,这点事我自己能实现的啊! 实现过程非常简单,不多说,效果如下: 上代码 新建项目起名为 AimPoint 图片 a ...

  6. QT做的小游戏,技术成长ing(莫名押韵_dog)

    做这个项目记录的一些笔记. 说明:翻金币项目是一款经典的益智类游戏,我们需要将金币都翻成同色,才视为胜利.首先,开始.选关.游戏.胜利界面如下: 游戏的代码和软件资源请点击自取[资源在此](提取码:7 ...

  7. QT项目实战之翻金币小游戏

    目录 一.实现效果 二.实现过程 1.创建项目.添加项目资源 2.创建主场景(mainscene.cpp/.h) 3.自定义开始按钮(mypushbutton.cpp/.h) 4.创建选择关卡场景(c ...

  8. 【QT】翻金币小游戏·我的学习版

    在学习QT的过程中,发现翻金币是一个很好的案例,故而学习,代码会有略微不同,是学习笔记. 目录 1.主函数main.cpp 2.自定义按钮:mypushbutton.h/mypushbutton.cp ...

  9. QT 项目 智能家居系统 上位机

    有哪些文件  : 头文件: 1. auidio .h  语音识别 模块 2. camera.h  人脸识别登录模块 3. chooselevelscene.h  翻金币游戏的 4. dataconfi ...

  10. 用Qt开发小游戏《愤怒的小鸟》

    文章目录 前言 本文章主要讲解我和朋友一起用Qt开发的小游戏<愤怒的小鸟>,游戏素材来源于游戏截图和网上查找.这是一款曾经在手机上风靡一时的横屏小游戏,游戏具体怎么玩想必我就不用跟大家介绍 ...

最新文章

  1. 美多商城之用户登录(QQ登录)
  2. mysql json 函数_MYSQL 开发设计表是硬邦邦的VARHCAR 还是JSON TYPE 来处理数据更香
  3. vue2.0 组织机构树形选择组件(类似elementui el-transfer 与 el-tree 两个标签的结合)...
  4. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法...
  5. [Array]Pascal's Triangle II
  6. ViewState机制的解析(转自csdn)
  7. 【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
  8. java中IO流详解
  9. 印度 语言简称_保存印度的语言和文化:图卢维基百科的诞生
  10. Python数据分析库pandas高级接口dt和str的使用
  11. 查询两个表合并成一个表
  12. cmd jar java_cmd运行jar报错问题
  13. mysql上传spc数据慢_SPC实施篇:控制图数据处理这8个细节要注意!
  14. AI缘起 —— 达特茅斯会议
  15. 红蜻蜓抓图软件测试简历,红蜻蜓抓图精灵
  16. java 处理表情字符_使用轻量级工具emoji-java处理emoji表情字符
  17. android桌面壁纸显示不全屏显示,手机壁纸怎么全屏 全屏显示手机壁纸方法
  18. 中国移动灵犀云语音识别及合成SDK(iOS)使用指南
  19. 那些在风雨中依然坚守的人们
  20. 使用tableau制作词云

热门文章

  1. qq街景输入 dir-item.js
  2. 软件测试自动感应灯,原来这么简单——四种常见LED感应灯工作原理
  3. 腾讯云服务器SSH密匙登录教程(创建密匙/关联/登录)
  4. 概率分布F(x)和概率密度f(x)
  5. IP地址分为A,B,C,D,E五类
  6. .NET Standard
  7. 无线网络dns服务器设置,netgear 无线dns设置教程
  8. html表格数据填充,bootstrap table.js动态填充单元格数据的多种方法
  9. 【01】制作第一个zblog模板第一期,第一步首先我们创建我们的模板基础信息以及申请成为zblog开发者
  10. 新西兰梅西大学有计算机专业吗,新西兰大学计算机排名第一之梅西大学计算机专业...