废话不多说先上图
上代码
setWindowFlags(Qt::FramelessWindowHint); //隐藏窗体标题栏
setAttribute(Qt::WA_TranslucentBackground); //设置窗体透明度
effect = new QGraphicsDropShadowEffect; //绘制窗体阴影
effect->setOffset(4,4);
effect->setOffset(6,6);
effect->setColor(QColor(0,0,0,150));
effect->setBlurRadius(10);
ui->mainwindow_fre_main->setGraphicsEffect(effect); //原生窗体已设为透明,此处绘制QFrame的阴影来显示
敲重点,布局文件和QFrame有这么几个属性,如果此处没有将这几个属性设置为0,布局器和QFrame内的控件总会和父容器有一定的间隙,看着很割裂,我搜遍全网几乎没人提到这几个属性。
在这几个属性设置为0以后QFrame和布局其内的控件就可以撑满父容器,没有一点间隙,当然对于一些有边框的容器还是会有1px的间隙,但控件本身的,可以通过设置属性隐藏。
最外层的布局其要注意一下,因为主窗体已经设为透明了,所以最外层的布局器要留下一定的宽度来显示阴影,阴影就绘制在最外层布局器里面装的那个Frame上。