鼠标穿透
记录原因:学习屏幕水印
Qt实现屏幕水印的方法为创建一个透明的widget,在其中drawText,再将该窗口设为鼠标穿透。
XShapeCombineRectangles( QX11Info::display(),winId(),ShapeInput,0,0,
NULL,0,ShapeSet,YXBanded);
这一行代码就可以将窗口设置为鼠标穿透。
使用这行代码需要:
#include <QX11Info>
#include <X11/extensions/shape.h>
需要在.pro文件中
QT += core gui x11extras
如果出现Project ERROR: Unknown module(s) in QT: x11extras
的错误,可能是因为未安装x11extras模块,执行以下shell命令即可
sudo apt install libqt5x11extras5-dev
如果出现undefined reference to symbol 'XShapeCombineRectangles'
的错误,原因是未链接库,需要在.pro中添加以下带代码
LIBS += -lX11 -lXext
取消鼠标穿透
查资料的时候看到的,顺便记录一下
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);
转发请注明出处(雨后星辰):http://www.cnblogs.com/AfterTheRainOfStars/p/4030042.html