具有透明背景的Qt小部件

gdw*_*dw2 5 python qt transparency pyside

(我正在使用PySide,但我认为对于任何语言绑定,答案都是相同/相似的)。

我正在尝试使用位于此处的整形时钟示例,并使时钟的表面(圆圈)透明,以便我看到的只是时钟指针和分钟刻度。照原样,当示例运行时,它看起来像这样。我正在使用Windows 7。

到目前为止,我已经尝试了以下方法(在构造函数中):

  • self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
    • 时钟出现(在任务栏中显示),但我在任何地方都看不到它
  • self.setAttribute(QtCore.Qt.WA_NoSystemBackground)
    • 时钟出现,但背景为纯黑色。
  • self.setWindowOpacity(0.5)
    • 时钟出现,但是整个时钟是透明的。我希望背景(面)是透明的,但我希望钟针可见。

gdw*_*dw2 6

得到它了!

这来自原始示例代码(构造函数):

    ...
    self.setWindowFlags(self.windowFlags() | QtCore.Qt.FramelessWindowHint)
    ...
Run Code Online (Sandbox Code Playgroud)

这是修改后的版本(按我的问题工作):

    ...
    self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
    self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
    ...
Run Code Online (Sandbox Code Playgroud)

删除self.windowFlags()是我缺少的部分。(我不确定我为什么要删除它,或者为什么要删除它……还有很多东西要学习)。


小智 5

如果我没记错的话,还应该设置其样式表:

self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setStyleSheet("background:transparent;")
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助。