最近在用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 最常用的20条命令

    1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如:   cd /root/Docements # 切 ...

  2. C# 使用 Windows API 发送文件到打印机

    最近需要做一个打印的功能,于是在网上找到了这么一个方法. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public cl ...

  3. 【源码分享】仿网易客户端源码效果 apkbus的~

    http://www.apkbus.com/forum.php?mod=viewthread&tid=184867 内容我就不说了,直接点开看吧.

  4. hihocoder1479 三等分

    地址:http://hihocoder.com/problemset/problem/1479 题目: 三等分 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近 ...

  5. [pixhawk笔记]7-MAVLink添加自定义消息

    前一篇学习了uORB,用于px4中各个模块的进程间通信,下来学习MAVLink,用于飞控和地面站之间的通信.教程中主要给出了使用MAVLink的发送和接收消息的方法.完整的MAVLink消息列表见该网 ...

  6. DNSmasq安装配置

    dns安装配置yum -y install dnsmasq dns配置文件vi /etc/dnsmasq.confresolv-file=/etc/resolv.dnsmasq.confaddn-ho ...

  7. let与const心智模型

    let 与 const 心智模型: let与const分别是变量与常量的块级声明关键字: 其主要目的是为了约束开发者编写出逻辑更加清晰,阅读性更好的代码: 它们体现了JavaScript的" ...

  8. linux下安装mysql详细步骤

    最近买了个阿里云服务器,搭建mysql环境. 该笔记用于系统上未装过mysql的干净系统第一次安装mysql.自己指定安装目录,指定数据文件目录. linux系统版本: CentOS 7.3 64位 ...

  9. java中的垃圾回收机

    任何语言在运行过程中都会创建对象,也就意味着需要在内存中为这些对象在内存中分配空间,在这些对象失去使用的意义的时候,需要释放掉这些内容,保证内存能够提供给新的对象使用.对于对象内存的释放就是垃圾回收机 ...

  10. SaltStack执行状态收集入库-第五篇

    实验目标 1.salt执行的状态然后结果写入MySQL可以方便查询执行salt执行的历史记录 实现方法 1.使用salt的return功能,是minion直接写入MySQL(相对比较麻烦) 2.使用m ...