c++ - Qt + 无框窗 + 合成

标签 c++ python qt pyqt4 shadow

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

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/

相关文章:

python - Pandas :如何分组并计算给定列中的唯一性?

python - 如何将带有附加功能的 Python 模块打包为默认值?

Qt Design 推广 Qpushbutton 参数化构造函数

qt - 如何在Qt中使用QFont获取字体文件路径?

c++ - 如何在循环 C++ 中创建唯一指针?

python - 在所有其他正在运行的应用程序之上显示 tkMessageBox

c++ - 什么时候引用函数有用?

c++ - 这个 Qt 样板构造函数为什么不是递归的?

c++ - 是否可以使用 NULL 检查制作通用 C++ 函数指针包装器?

c++ - 错误 : invalid operand for instruction using indexed addressing and Clang