最近在用qt写一个跨平台的软件,因为设置了无边框,并且我自己给程序窗口加了阴影,阴影范围又比较大

所以必须给阴影区域加上鼠标穿透才能有更好的体验。

上网查了一下,在windows下使用SetWindowLong就行

在linux下的搜了好久也找到了一个方法

就是XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput,

                0,0, NULL, 0, ShapeSet, YXBanded);(需要#include <X11/extensions/shape.h>)
我试了一下,的确有效,但是问题来了,设置穿透后怎么取消呢?
这个问题我又搜了很久,但是这次没那么幸运了,在百度和谷歌上都没有搜到相关问题
对于我这个linux小白来说可愁坏了
但是工夫不负有心人,试了一晚上,终于对这个函数有一点了解了,取消鼠标穿透的方法也试出来了。
下面就分享给大家

转发请注明出处(雨后星辰):http://www.cnblogs.com/AfterTheRainOfStars/p/4030042.html

 XRectangle* myrect = new XRectangle;
myrect->x = ;
myrect->y = ;
myrect->width = width();
myrect->height = height();
XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, , , myrect,,ShapeSet,YXBanded);

在设置鼠标穿透的时候给函数传的第六个参数为NULL

查看函数的定义发现这个参数是XRectangle*类型的

下面直接说结论,当设置鼠标穿透的时候,如果这个参数为NULL,那整个窗口都将被穿透

然后第七个参数就是控制是设置穿透和取消穿透(取消为1)的了

但是,取消穿透的时候必须设置区域。不然设置第七个参数为1的时候程序会执行出错

我先前的误区就是在设置完第七个参数之后程序闪退,就一位那个参数不能动,后面就一直实验其他参数,但是都不行

后来再看一个博客的时候灵机一动就试了试将第六个参数的NULL改为一个XRectangle*对象,然后将第七个参数改为1就没有问题了。

这就是我解决问题的过程,希望能帮到大家。

linux下鼠标穿透和取消穿透--linux小白,大神无视的更多相关文章

  1. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  2. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

  3. 刚下了VS2010不会用,求大神指点迷津

    刚下了VS2010不会用,求大神指点迷津 [菌菌][C语言MOOC]第七周计算分数精确值(10分) thinkphp3.1Calltoamemberfunctionget()onnull java提示 ...

  4. .netcore在linux下使用P/invoke方式调用linux动态库

    http://www.mamicode.com/info-detail-2358309.html   .netcore下已经实现了通过p/invoke方式调用linux的动态链接库(*.so)文件 1 ...

  5. Linux下鼠标滚轮速度调整

    安装imwheel 于home下创建.imwheelrc gedit ~/.imwheelrc 在.imwheelrc中粘贴以下内容 ".*" None, Up, Button4, ...

  6. linux下patch命令使用详解---linux打补丁命令

    http://blog.csdn.net/pashanhu6402/article/details/51849354 语 法:patch [-bceEflnNRstTuvZ][-B <备份字首字 ...

  7. Linux 下使用 killall 命令终止进程的 8 大用法

    Linux 的命令行提供很多命令来杀死进程.比如,你可以向 kill 命传递一个PID来杀死进程:pkill 命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死. 但是还有一个命令叫 ki ...

  8. Linux下使用shell实现上传linux下某个目录下所有文件到ftp

    首先我们需要搞清楚单个文件怎么上传,把这个单文件上传到ftp上的实现命名为一个:upload_to_ftp_command.sh 之后,需要弄清楚怎么实现遍历一个目录下的所有文件的,把这个遍历某个目录 ...

  9. 100 道 Linux 笔试题,能拿 80 分就算大神!

    本套笔试题共100题,每题1分,共100分.(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统C. 跟踪管理系统信息和错 ...

随机推荐

  1. Linux系统——shell脚本应用示例

    传入一个网段地址,自动找出本网段内存活的IP地址.2,将存活的IP地址当作密码来创建Linux用户,用户名格式为:你的名字_数字 3,有几个存活IP地址,就自动创建几个用户   4,最后将创建的用户名 ...

  2. 如何高效的遍历HashMap 以及对key 进行排序

    Map<Integer ,Object> map = new HashMap<Integer,Object>(); for(int i = 0; i<=100;i++){ ...

  3. app安全研究

    国内Android App在线漏洞检测平台  腾讯金刚审计系统 http://service.security.tencent.com/kingkong 免费 无限制 腾讯御安全 http://yaq ...

  4. [one day one question] Iscroll 5.0 在chrome上无法滑动

    问题描述: Iscroll 5.0 在chrome上无法滑动,不仅仅在chromePC的开发的时候,在手机上的chrome也有同样的问题,这怎么破? 解决方案: // 关闭 PointerEvent ...

  5. Java读者写者问题

    实验存档. 允许好几个人同时读,但是不允许在有人读的时候写,以及同一时间只能有一个人在写. 读者.java: package operating.entity.readerwriter; import ...

  6. java之继承中的构造方法

    继承中的构造方法  1.子类的构造过程中必须调用其基类的构造方法. 2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法. 2.1.使用this(argumen ...

  7. MVC 中的家常事

    对于@后面变量加上括号解决异意的方法 例如: hello@User.Name 会误判为电子邮箱,解决办法是括号,即hello@(User.Name) 使用@Html.Raw()输出后台到.cshtml ...

  8. saltstack之haproxy的安装配置

    使用saltstack编译安装haproxy: 由于编译安装haproxy,所以安装之前需要建立编译环境,将编译环境需要安装的包单独放置在一个目录中,当编译haproxy或其他时,直接include这 ...

  9. 20145314郑凯杰 《Java程序设计》第4周学习总结

    20145314郑凯杰 <Java程序设计>第4周学习总结 所有代码已上传: 教材学习内容总结 ①继承 设计程序中,因们需要设计多个模块,我想到了李晓东以前教我们的三个字"模块化 ...

  10. linux系统调用是通过软中断实现的吗

    软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果.很多情况下,软中断和信号有些类似,同时,软中断又是和硬中断相对应的,硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序 ...