QGraphicsDropShadowEffect窗口阴影影响QWebEnginer界面不刷新的一种解决方案

关于在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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值