我正在尝试打开几个无框的弹出窗口(顶层)。我可以通过以下方式实现这一点:
window.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)
但问题是 Windows 不经过操作系统合成器(例如在 Windows 上它们没有阴影)。 我可以使用 Qt.Popup 和 Qt.ToolTip 标志实现窗口阴影,但这两个都有行为问题,工具提示始终位于顶部,并且当焦点丢失时弹出窗口会关闭。
那么,有什么方法可以显示具有默认操作系统窗口管理器阴影效果的无框窗口?
最佳答案
在 Windows 上找到了解决方法。但我无法用 Qt 做到这一点,所以我使用了 win32 hack。
将其添加到 QWidget 类构造函数中:
if sys.platform == 'win32':
import win32api
win32api.SetClassLong(eval(self.winId().__hex__()), -26, 0x0008 | 0x00020000)
我实际上将 CS_DROPSHADOW 样式添加到窗口类样式
关于c++ - Qt + 无框窗 + 合成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099378/