2

我正在尝试打开几个无框的弹出窗口(顶层)。我可以通过以下方式实现:

window.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)

但问题是 Windows 不会通过 OS 合成器(例如在它们没有投影的 Windows 上)。我可以使用 Qt.Popup 和 Qt.ToolTip 标志来实现窗口阴影,但这两个都有行为问题,工具提示总是在顶部,并且当它们失去焦点时弹出窗口会关闭。

那么,有什么方法可以显示具有默认操作系统窗口管理器阴影效果的无框窗口?

4

2 回答 2

2

在 Windows 上找到了解决方法。但我不能用 Qt 做到这一点,所以我使用了 win32 hack。
将此添加到 QWidget 类构造函数:

if sys.platform == 'win32':
  import win32api
  win32api.SetClassLong(eval(self.winId().__hex__()), -26, 0x0008 | 0x00020000)

我实际上在窗口类样式中添加了 CS_DROPSHADOW 样式

于 2013-10-14T13:36:34.697 回答
1

它可能有助于下一个用户使用 Qt.ToolTip 标志并避免工具提示始终位于顶部。

Python代码

self.setWindowFlags(self.windowFlags() | Qt.ToolTip)
self.setWindowFlags(self.windowFlags() & ~Qt.WindowStaysOnTopHint)
于 2015-11-27T08:41:00.450 回答