我写了一个继承自QMainWindow的类,代码很少,如下:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);
resize(300,300);
QPushButton * pButton = new QPushButton(this);
pButton->move(100,100);
}
也就是说我把300*300的主窗体设置为透明,然后加了个
按钮上去。
现在
问题出现了:
在windows和Mac上,如果你用
鼠标点击button周边的区域,程序是不响应鼠标事件的,鼠标会直接点到程序后面的桌面上去,比如图2

的qq图标会拿到焦点。
而在linux上,虽然按钮周边的区域也是透明的,但是点击按钮周边的区域,按钮下方的桌面是不会有反应的。
为什么?有高人知道吗?
如果注释掉 setWindowFlags(Qt::FramelessWindowHint);,可以看到
窗口实际范围是这么大【图1】: