我尽量让我的窗口背景透明。但在其中的小部件上它,我看到我的桌面图像的部分。 现在我有这在构造:

    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之前),你不能做到这一点:

FAQ链接:

  

有用于部分没有直接支撑   透明度,这里的窗口   透明和在其上的窗口小部件是   不Qt中。

记住,PyQt的最近版本的Qt对创建4.4,因此不支持你想要的半透明窗口。如果你设置你的主窗口的背景色不是透明的其他任何GS的其他答案,约setAutoFillBackground(真)会工作。

此外,请参见Qt.WA_NoSystemBackground的文档,它说,你可以不依赖于透明的效果,你到目前为止有:

Qt的:: WA_NoSystemBackground

  

指示窗口小部件没有   背景时,即当插件   接收漆事件,背景   不会自动重新绘制。注意:   不像WA_OpaquePaintEvent,新   曝光的区域永远充满   背景(例如示出了后   窗口首次用户可以   看“穿越”,直到应用程序   处理油漆事件)。这是   由微件的作者设置/清零。

其他提示

我刚刚发现

  

创建半透明窗口

     

由于Qt的4.5,它已经可以   创建半透明窗口   在支持视窗系统的区域   合成

     

要启用此功能在顶层   窗口小部件,将其   Qt的:: WA_TranslucentBackground属性   用的setAttribute(),并确保   其背景涂上   在各地区非不透明的颜色你   想是部分透明。

PyQt的仍然是Qt的4.4,也许这就是问题所在。

试试这个为你的小工具:

widget.setAutoFillBackground(True)

我想你也可以将其设置在Qt设计。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top