题
我尽量让我的窗口背景透明。但在其中的小部件上它,我看到我的桌面图像的部分。 现在我有这在构造:
self.setFocusPolicy(Qt.StrongFocus) self.setAttribute(Qt.WA_QuitOnClose,True) self.setBackgroundRole(QtGui.QPalette.Base) self.setAttribute(Qt.WA_NoSystemBackground)
解决方案
继GS的答案,这个FAQ解释了为什么(QT 4.5之前),你不能做到这一点:
有用于部分没有直接支撑 透明度,这里的窗口 透明和在其上的窗口小部件是 不Qt中。
记住,PyQt的最近版本的Qt对创建4.4,因此不支持你想要的半透明窗口。如果你设置你的主窗口的背景色不是透明的其他任何GS的其他答案,约setAutoFillBackground(真)会工作。
此外,请参见Qt.WA_NoSystemBackground的文档,它说,你可以不依赖于透明的效果,你到目前为止有:
指示窗口小部件没有 背景时,即当插件 接收漆事件,背景 不会自动重新绘制。注意: 不像WA_OpaquePaintEvent,新 曝光的区域永远充满 背景(例如示出了后 窗口首次用户可以 看“穿越”,直到应用程序 处理油漆事件)。这是 由微件的作者设置/清零。
其他提示
我刚刚发现这:
创建半透明窗口
由于Qt的4.5,它已经可以 创建半透明窗口 在支持视窗系统的区域 合成
要启用此功能在顶层 窗口小部件,将其 Qt的:: WA_TranslucentBackground属性 用的setAttribute(),并确保 其背景涂上 在各地区非不透明的颜色你 想是部分透明。
PyQt的仍然是Qt的4.4,也许这就是问题所在。
试试这个为你的小工具:
widget.setAutoFillBackground(True)
我想你也可以将其设置在Qt设计。
不隶属于 StackOverflow