Qt中的透明窗口

Posted

技术标签:

【中文标题】Qt中的透明窗口【英文标题】:Transparent window in Qt 【发布时间】:2011-03-04 21:19:34 【问题描述】:

如何在 Qt for Linux 中创建透明窗口。我尝试了以下方法,但它不起作用:

myWidget::myWidget(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint) 
   setWindowOpacity(0.4);

【问题讨论】:

我想你已经尝试过 windowOpacity 了? 透明窗口对我来说很好用。我只是忘记了不透明度。这个问题本身就提醒我使用它。现在一切正常!谢谢!为此+1。 :) 【参考方案1】:

"注意在X11下你需要有 一个正在运行的复合管理器,并且 X11 特定 _NET_WM_WINDOW_OPACITY atom需要得到支持 您正在使用的窗口管理器。”

https://doc.qt.io/qt-5/qwidget.html#windowOpacity-prop

您使用的是什么窗口管理器? http://en.wikipedia.org/wiki/Compositing_window_manager#List_of_compositing_window_managers

您的服务器是否支持“复合扩展”? http://en.wikipedia.org/wiki/Composite_(graphics)

你的卡支持吗?

【讨论】:

我使用 gnome 作为窗口管理器。在第一篇文章中的 MS Windows 代码上工作正常 是的,在 Windows XP 及更高版本上(当然有适当的视频卡),因为他们有简单的复合管理器。您的 X11 服务器中必须有复合管理器才能使其工作。【参考方案2】:

尝试使用QGraphicsOpacityEffect和QWidget::setGraphicsEffect

【讨论】:

【参考方案3】:

我有类似的问题,但在 Windows 上,不确定它是否对 Linux 有帮助 代替 Qt::FramelessWindowHint 使用 Qt::SplashScreen。我可以在我的其他小部件之上有一个无框且透明的窗口。

【讨论】:

以上是关于Qt中的透明窗口的主要内容,如果未能解决你的问题,请参考以下文章

Qt Widget 利用 Qt4.5 实现酷炫透明窗体

Qt 中怎么设置框架中的文本框的透明度

Qt窗口透明

如何在 Qt 中的弹出窗口小部件上创建平滑的圆角

qt按钮边框的问题

求助,关于Qt的窗口半透明,窗口上的空间不透明