Qt与Windows 10透明小部件无法正常工作

时间:2017-05-02 08:51:22

标签: python qt

我正在努力在窗口中的一些子窗口小部件上绘制一些图纸。所以我想出了一个透明的叠加小部件,使其背景透明,将其置于其他窗口之上,直接在其上绘画。这一切在Mac上运行良好。但是,此叠加窗口小部件不会显示在Windows 10中。以下是一些用于创建此叠加透明窗口小部件的代码:

class OverlayWidget(QWidget):
    def __init__(self, x, y, width, height):
        super(OverlayWidget, self).__init__()
        self.setWindowFlags( Qt.FramelessWindowHint | Qt.Widget | Qt.WindowStaysOnTopHint | Qt.TransparentMode)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.org_x = x
        self.org_y = y
        self.window_width = width
        self.window_height = height

        self.setGeometry(self.org_x, self.org_y, self.window_width, self.window_height)

        self.setMouseTracking(True)
        self.setCursor(Qt.BlankCursor)

一旦我设置了WA_TranslucentBackground属性,没有任何显示,甚至鼠标光标也不会改变,这意味着这个小部件可能甚至没有被加载。有什么建议吗?

编辑: 这似乎与此窗口小部件添加到其父窗口的方式有关。如果我创建一个布局并将其添加到布局,然后将其父布局设置为我刚刚创建的布局,它就会显示出来。但是,这样做与我将其叠加在另一个现有布局之上的目的相矛盾。

但是如果我只是通过将父窗口小部件传递给它构造函数来创建这个窗口小部件,它在Windows中不起作用,但在Mac中可以工作。

这很烦人。

0 个答案:

没有答案