QT实现窗口四周阴影

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guorong520/article/details/88946582

网上好多写的不清楚。。。又搞了好长时间。这样应该最简单了。

一、效果图
在这里插入图片描述
二、思路
1.先将所有窗口控件拖到一个QFrame里

2.设置窗口背景颜色
可以只设置顶级窗口的背景颜色,也可以只设置QFrame的背景颜色,也可以都进行设置。在实现这个功能时,子窗口会继承父窗口的背景颜色,不进行设置的话,子窗口和父窗口会融为一体,控件都会出现阴影。
所以我们需要设置:styleSheet
例如:background-color: rgb(254, 254, 254);

3.设置窗口背景透明
设置窗口属性Qt::WA_TranslucentBackground来设定该窗口透明显示,但是有一个问题,就是如果该窗口是个top level窗口,就会有标题栏(title bar), 在windows平台下,如果不把这个标题栏去掉(设置Qt::FramelessWindowHint,标志位就会去掉标题栏),那么将不会是透明效果,而是背景为全黑
在这里插入图片描述

setAttribute(Qt::WA_TranslucentBackground);

4.设置参数

QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect(this);
effect->setOffset(0, 0);   //设置向哪个方向产生阴影效果(dx,dy),特别地,(0,0)代表向四周发散
effect->setColor(Qt::gray);  //设置阴影颜色
effect->setBlurRadius(20);   //设定阴影模糊度
ui->frame->setGraphicsEffect(effect);

参考:https://www.jianshu.com/p/775fe6c4aabd

猜你喜欢

转载自blog.csdn.net/guorong520/article/details/88946582