linux下鼠标穿透和取消穿透--linux小白,大神无视
2014-10-17 00:19
1356 查看
最近在用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
在设置鼠标穿透的时候给函数传的第六个参数为NULL
查看函数的定义发现这个参数是XRectangle*类型的
下面直接说结论,当设置鼠标穿透的时候,如果这个参数为NULL,那整个窗口都将被穿透
然后第七个参数就是控制是设置穿透和取消穿透(取消为1)的了
但是,取消穿透的时候必须设置区域。不然设置第七个参数为1的时候程序会执行出错
我先前的误区就是在设置完第七个参数之后程序闪退,就一位那个参数不能动,后面就一直实验其他参数,但是都不行
后来再看一个博客的时候灵机一动就试了试将第六个参数的NULL改为一个XRectangle*对象,然后将第七个参数改为1就没有问题了。
这就是我解决问题的过程,希望能帮到大家。
所以必须给阴影区域加上鼠标穿透才能有更好的体验。
上网查了一下,在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 = 0; myrect->y = 0; myrect->width = width(); myrect->height = height(); XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0, 0, myrect,1,ShapeSet,YXBanded);
在设置鼠标穿透的时候给函数传的第六个参数为NULL
查看函数的定义发现这个参数是XRectangle*类型的
下面直接说结论,当设置鼠标穿透的时候,如果这个参数为NULL,那整个窗口都将被穿透
然后第七个参数就是控制是设置穿透和取消穿透(取消为1)的了
但是,取消穿透的时候必须设置区域。不然设置第七个参数为1的时候程序会执行出错
我先前的误区就是在设置完第七个参数之后程序闪退,就一位那个参数不能动,后面就一直实验其他参数,但是都不行
后来再看一个博客的时候灵机一动就试了试将第六个参数的NULL改为一个XRectangle*对象,然后将第七个参数改为1就没有问题了。
这就是我解决问题的过程,希望能帮到大家。
相关文章推荐
- 大数据开发从小白到大神(一)——搭建Linux虚拟机平台
- 快速排序(小白入门专用,大神请无视)
- Qt 不规则窗体 – 鼠标点击穿透(Linux也可以,有对x11的配置的方法)
- 关于窗体的鼠标穿透……
- 实现鼠标穿透能力
- Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!
- Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!
- 怎么实现“鼠标穿透”,即鼠标对窗体失去作用,对着它点右键要出现WINDOWS的桌面右菜单
- 怎么实现“鼠标穿透”,即鼠标对窗体失去作用,对着它点右键要出现WINDOWS的桌面右菜单
- Linux图形界面下鼠标不能动
- POSIX 线程取消点的 Linux 实现(zz)
- USB键盘和鼠标在linux下的支持方式(RH7.2)
- (开源,GPLv3)EbookCopier 实现(2) – 具有半透明和鼠标穿透效果的“取景框”
- 在虚拟机上安装LINUX鼠标不可用的问题
- 网页中取消鼠标右键方法大全
- Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!
- VC中实现鼠标穿透
- C#制作鼠标可以穿透的窗体
- DataGrid中实现鼠标移入移出变色,且选择再变色,取消选择恢复原色,且原色隔行不一样的代码...
- linux下如何模拟按键输入和模拟鼠标