qt中,一些弹窗我们期望有一个阴影的效果。我们可以在ui界面中,对整个窗口的边缘预留10px,然后在构造函数中设置一下的代码,当然还要设置透明属性,然后即可实现。
// 创建阴影效果QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect(this);shadowEffect->setColor(Qt::gray); // 阴影颜色shadowEffect->setOffset(0, 0); // 阴影偏移shadowEffect->setBlurRadius(10.0); // 模糊半径
注意,如果该窗口并非一次性弹窗,而是存在展开收起,类似某种可展开的工具条,这种情况下描绘的阴影,可能会导致窗体刷新异常(我有遇到过,比如窗口收起的时候,原本的窗口区域还有图像残留,即便我已经delete了shadowEffect ,这一点我尚未解决)
说到底,用代码来描绘阴影只是其中一种方式,我们可以将窗体置为透明,填充实现准备的带有阴影的背景图片,当然这个肯定不够灵活。