我的应用程序有非矩形弹出小部件。
他们的班级定义了以下内容以实现这种透明度:
setAttribute(Qt::WA_NoSystemBackground, true);
setAttribute(Qt::WA_TranslucentBackground, true);
我也使用:
this->setWindowFlags(Qt::Popup| Qt::FramelessWindowHint);
问题是在 Windows 7 上,在我的窗口的底部和右侧绘制了一个自动“阴影”。这是非常不希望的。
所以,我尝试使用 Qt::Tool 而不是 Qt::Popup
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
这在视觉上有效。没有阴影,但现在在我的小部件窗口外单击鼠标不会像使用 Qt::Popup 那样自动关闭/隐藏它。
所以,我需要以下两种解决方案之一:
- 一种让 Qt::Popup摆脱自动窗口阴影装饰的方法
- 一种让 Qt::Tool 窗口在其外部发生鼠标单击的方法。
注意事项:我的应用程序是为 Windows XP 及更高版本构建的。我不能只使用 Vista/Win7 运行时 DLL,也不能有“Windows XP”和“Vista 及更高版本”单独的构建。
欢迎任何建议。