• 5988阅读
  • 2回复

高手进!关于透明窗体,为什么同样的代码在linux和其他Os上不一样? [复制链接]

上一主题 下一主题
离线radon2awp
 

只看楼主 正序阅读 楼主  发表于: 2010-11-15
我写了一个继承自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】:
离线zlgdgzl
只看该作者 2楼 发表于: 2011-08-08
为以没人答呢,我也有疑问。
离线ssb123

只看该作者 1楼 发表于: 2011-08-08
楼主我也遇到相同的问题,你能告诉我是为什么吗
快速回复
限100 字节
 
上一个 下一个