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中的透明窗口的主要内容,如果未能解决你的问题,请参考以下文章