版权声明:本文为博主原创文章,未经博主允许不得转载。 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);