我的应用程序有非矩形的弹出窗口小部件。检测QWidget外部点击
其类定义了以下以实现透明度:
setAttribute(Qt::WA_NoSystemBackground, true);
setAttribute(Qt::WA_TranslucentBackground, true);
我也使用:
this->setWindowFlags(Qt::Popup| Qt::FramelessWindowHint);
的问题是,在Windows 7,一种自动的“影子”被上所绘制的我的窗户的底部和右侧。这是非常不可取的。
所以,我尝试使用Qt ::工具,而不是Qt的::弹出
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
此作品在视觉上。没有阴影,但现在我的窗口小部件窗口外面点击鼠标不会自动关闭/隐藏它,因为它会用Qt :: Popup完成。
所以,我需要这两个解决方案之一:
- 有Qt的::弹出和一种方法摆脱Windows自动阴影装饰
- 办法让Qt的::工具窗口在其外部发生鼠标点击。
一注:我的应用程序是为Windows XP及以上构建的。我不能仅使用Vista/Win7运行时DLL,也不能使用“Windows XP”和“Vista和更高版本”单独的版本。
任何建议将受到欢迎。
Qt :: WindowType :: NoDropShadowWindowHint可以擦除阴影效果 – Enzojz 2016-12-19 09:44:55