gpt4 book ai didi

pyqt - Qt : Erase background (Windows Aero Glass)

转载 作者:行者123 更新时间:2023-12-03 01:27:43 27 4
gpt4 key购买 nike

更新

参见Using Blur Behind on Windows有关使用 Qt 和 DWM 的示例。 alt text http://labs.trolltech.com/blogs/wp-content/uploads/2009/09/blurbehind2.png

<小时/>

原始问题:

我想用 Qt 创建一个 Windows Aero Glass 窗口,现在它看起来像这样: alt text

但是在调用一些 my_window->repaint() 之后,我的窗口标签变得损坏: alt text

但是现在如果我稍微调整窗口大小,它就会正确地重新绘制。

<小时/>

问题是:如何删除窗口背景,以便小部件将自己绘制在干净的玻璃上?

<小时/>

重现问题的简短代码是(Vista with Aero):

class Window(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.setLayout(QVBoxLayout())
self.layout().addWidget(QLabel("This is the text"))

# let the whole window be a glass
self.setAttribute(Qt.WA_NoSystemBackground)
from ctypes import windll, c_int, byref
windll.dwmapi.DwmExtendFrameIntoClientArea(c_int(self.winId()), byref(c_int(-1)))
def mousePressEvent(self, event):
self.repaint()

您现在可以单击该窗口,或者只需按几次 Alt-Tab 即可。

无论如何,使用带有 Aero Glass 的标签不是我所需要的,因为 QLabel 不知道如何用一会儿发光来绘制自己(如窗口的标题)。我需要的是清洁“玻璃”的通用方法。

最佳答案

只需使用:

QPainter p

p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(boundsRect, QColor(0, 0, 0, 0));

这会丢弃旧内容并填充透明颜色。

更多信息位于

编辑:最好使用 CompositionMode_Clear 并用任何颜色绘制矩形。

关于pyqt - Qt : Erase background (Windows Aero Glass),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/453069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com