赞
踩
无边框窗口添加阴影需要两个窗口,第一个顶层窗口用于显示控件的,第二个是底层窗口用于承载顶层窗口并显示边框阴影。也就是说把底层窗口设置为透明只显示边框阴影,再将顶层窗口放上去形成了有阴影的无边框窗口。
- #include <QGraphicsDropShadowEffect>
- #include <QVboxLayout>
- //设置窗体透明
- this->setAttribute(Qt::WA_TranslucentBackground, true);
-
- //设置无边框
- this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);
-
- QVBoxLayout* pMainLay = new QVBoxLayout(this);
- CLoginRealWidget* pRealWidget = new CLoginRealWidget(this);//这是自己定义的顶层的无边框窗口,如何实现无边框窗口参考本系列文章的第一篇
-
- pMainLay->addWidget(pRealWidget);
- pMainLay->setContentsMargins(30, 30, 30, 30);
- setLayout(pMainLay);
-
- //给顶层widget设置背景颜色,不然看不见,因为底层widget已经透明了
- pRealWidget->setStyleSheet("background-color:rgb(255, 254, 253)");
- //Qt窗口阴影类
- QGraphicsDropShadowEffect* shadow = new QGraphicsDropShadowEffect(this);
-
- //设置阴影距离
- shadow->setOffset(0, 0);
-
- //设置阴影颜色 686868
- shadow->setColor(QColor("#686868"));
-
- //设置阴影区域
- shadow->setBlurRadius(30);
-
- //给顶层QWidget设置阴影
- pRealWidget->setGraphicsEffect(shadow);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。