微信公众号「编程学习基地」


文章目录


QGraphicsDropShadowEffect类提供了一个投影效果。

投影效果将源渲染为投影。投影的颜色可以使用setColor()函数修改。投影偏移可以使用setOffset()函数修改,投影的模糊半径可以使用setBlurRadius()函数修改。

默认情况下,投影是半透明的深灰色(QColor(63,63,63,180))阴影,模糊半径为1,向右下角偏移8像素。投影偏移量在设备坐标中指定。

给控件添加投影

QLabel* pLabel = new QLabel("ABCDEFG");
pLabel->setParent(this);
pLabel->setGeometry(10,10,50,50);
pLabel->setStyleSheet("font-size:30px;");
QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(pLabel);
shadowEffect->setOffset(0, 0); //阴影偏移
shadowEffect->setColor(Qt::black); //阴影颜色;
shadowEffect->setBlurRadius(10); //阴影半径;
pLabel->setGraphicsEffect(shadowEffect); //给窗口设置上当前的阴影效果;

效果对比

QGraphicsDropShadowEffect添加投影_css

QGraphicsDropShadowEffect添加投影_阴影效果_02

Widget无标题栏阴影效果

拖动一个CenterWidget到主Widget

QGraphicsDropShadowEffect添加投影_css3_03

初始化添加如下代码即可

ui->centerWidget->setStyleSheet("QWidget#centerWidget{ border-radius:4px; background:rgba(255,255,255,1); }");

this->setWindowFlags(Qt::FramelessWindowHint); //去掉标题栏
this->setAttribute(Qt::WA_TranslucentBackground,true); //无边框
//实例阴影shadow
QGraphicsDropShadowEffect *centerShadow = new QGraphicsDropShadowEffect(this);
//设置阴影距离
centerShadow->setOffset(0, 0);
//设置阴影颜色
centerShadow->setColor(QColor(39,40,43,100));
//设置阴影圆角
centerShadow->setBlurRadius(10);
//给嵌套QWidget设置阴影
ui->centerWidget->setGraphicsEffect(centerShadow);

效果如下

QGraphicsDropShadowEffect添加投影_阴影效果_04