查看完整版本: [-- 求助:遮罩效果的实现问题 --]

QTCN开发网 -> Qt基础编程 -> 求助:遮罩效果的实现问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

328689042 2020-05-12 08:26

求助:遮罩效果的实现问题

大家好,我是新手,有问题求助大家,目前实现的效果如下所示:
[attachment=21565]

就是一个类似截屏软件遮罩的效果,鼠标点击的时候有个蓝色圈,目前遇到的问题是,所有鼠标事件都被这个遮罩(QWidget)处理了,遮罩下的界面无法接收鼠标事件了,我试了下遮罩上的setAttribute(Qt::WA_TransparentForMouseEvents, true)方法后如下所示
[attachment=21566]

发现遮罩下的记事本捕获到鼠标事件,可以进行输入了,但是我的遮罩层没有捕获到鼠标事件,绿色小圆圈没有了
我想点击遮罩的时候,即可以让遮罩处理鼠标事件,又可以让后面的记事本捕获到鼠标,请问该怎么处理啊?

笑颜 2020-05-12 08:45
有个鼠标穿透的属性,你需要了解一下。

328689042 2020-05-12 09:44
笑颜:有个鼠标穿透的属性,你需要了解一下。 (2020-05-12 08:45) 

setAttribute(Qt::WA_TransparentForMouseEvents,true) 这个方法可以实现鼠标穿透,但是穿透后,我就无法画上图里的绿色圆圈了啊,因为当前窗体完全屏蔽了鼠标事件了,我不想这样,我想实现的是当前窗体实现完鼠标时间后,后面的窗体继续处理鼠标动作

maxlogo 2020-05-12 11:37
event->ignore(), 不接受事件就行了

笑颜 2020-05-14 12:43
328689042:setAttribute(Qt::WA_TransparentForMouseEvents,true) 这个方法可以实现鼠标穿透,但是穿透后,我就无法画上图里的绿色圆圈了啊,因为当前窗体完全屏蔽了鼠标事件了,我不想这样,我想实现的是当前窗体实现完鼠标时间后,后面的窗体继续处理鼠标动作 (2020-05-12 09:44) 

你参考https://github.com/xiaoyanLG/Barrage/blob/master/xysignalbarragescreen.cpp的void XYSignalBarrageScreen::changeMouseThrough(),可能是你想要的


查看完整版本: [-- 求助:遮罩效果的实现问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled