关于在QWebEnginer窗口上使用QGraphicsDropShadowEffect导致页面不刷新的问题网上有很多说明,关于解决方案大部分都是雷同的,就是通过QPainter来定义一个阴影边框,此方式可以达到目的,但是由于能力关系,自定义的边框阴影效果并不好,所以想到了另一种方式来实现。
实现原理:手动创建一个大小一样的窗口,并设置边框阴影,然后将其放置在QWebEnginer窗口的下方,这样就会有阴影效果,同时也不影响QWebEnginer的刷新
w->move(ui->frame2->pos()); w->resize(ui->frame2->size()); w->lower(); w->setStyleSheet("background:red;"); QGraphicsDropShadowEffect * graphicsDropShadowEffect = new QGraphicsDropShadowEffect(this); graphicsDropShadowEffect->setOffset(0,0); QColor shadowcolor(Qt::green); shadowcolor.setAlpha(250); graphicsDropShadowEffect->setColor(shadowcolor); graphicsDropShadowEffect->setBlurRadius(30); w->setGraphicsEffect(graphicsDropShadowEffect); w->show();
最后补充一下关于QGraphicsDropShadowEffect类的摘抄
一、描述
QGraphicsDropShadowEffect类提供投影效果。投影效果使用放置投影渲染源。
二、成员属性
1、blurRadius : qreal。此属性保存投影的模糊半径(像素)。使用较小的半径产生更清晰的阴影,而使用较大的半径产生更模糊的阴影。默认情况下,模糊半径为1像素。
2、color : QColor。此属性保存投影的颜色。默认情况为半透明的深灰色(QColor(63, 63, 63,180))。
3、offset : QPointF。此属性以像素为单位保存阴影偏移量。默认情况下,偏移量是向右下方8像素。
4、xOffset : qreal。此属性保存水平阴影偏移量(以像素为单位)。默认情况下,水平阴影偏移量是8像素。
5、yOffset : qreal。此属性保存垂直阴影偏移量(以像素为单位)。默认情况下,垂直阴影偏移量是8像素。
QGraphicsBlurEffect
该类用应产生模糊效果,主要函数setBlurRadius(qreal blurRadius),用于控制图形元素的模糊度,数值越大越模糊。使用该类例子如下
QGraphicsBlurEffect *e0 = new QGraphicsBlurEffect(this);
e0->setBlurRadius(0.2);
QGraphicsColorizeEffect
该类提供了使用另外一种颜色对当前图形的一种着色功能。主要函数是setColor(QColor)和setStrength (qreal strength),指定了着色和着色强度。使用该类例子如下
QGraphicsColorizeEffect *e1 = new QGraphicsColorizeEffect(this);
e1->setColor(QColor(0,0,192));
QGraphicsDropShadowEffect
该类提供了图形元素的阴影效果,用于增加立体感。主要设置函数有3个,setColor()用于设定阴影的颜色,setBlurRadius()用于设定阴影的模糊度,setOffset (qreal dx,qreal dy)用于设定在哪个方向产生阴影效果,如果dx为负数,则阴影在图形元素的左边。使用该类例子如下
QGraphicsDropShadowEffect *e2 = new QGraphicsDropShadowEffect(this);
e2->setOffset(8,8);
QGraphicsOpacityEffect
该类用于图形元素的透明效果,主要函数是setOpacity(qreal opacity),用于设置透明度,参数值在0和1.0之间。也可以设置部分透明效果,需要调用的函数是setOpacityMask (QBrush mask)。使用该类例子如下
QGraphicsOpacityEffect *e3 = new QGraphicsOpacityEffect(this);
e3->setOpacity(0.7);