当QWebEngineView的父对象设置了阴影效果,QWebEngineView也会被设置阴影效果,
但QWebEngineView被设置阴影效果之后,网页的渲染和交互会变得非常卡顿。
如下图官方介绍:
下面给出了既要保留父对象的阴影效果,又要解决QWebEngineView渲染慢的问题的解决方案:
1、对QWebEngineView对象也设置一次阴影效果,这样就可以移除父对象的阴影效果了(如下图所示:),同时QWebEngineView对象有了自己的阴影效果,就可以单独设置QWebEngineView对象的阴影效果不生效。
2、将QWebEngineView的阴影效果设置成不生效。
源码如下:
#include "shadowwidget.h"
#include "ui_shadowwidget.h"
#include <QGraphicsDropShadowEffect>
#include <QVBoxLayout>
#include <QDebug>
ShadowWidget::ShadowWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::ShadowWidget)
{
ui->setupUi(this);
//setWindowFlag(Qt::FramelessWindowHint);
QGraphicsDropShadowEffect * graphicsDropShadowEffect = new QGraphicsDropShadowEffect(this);
setGraphicsEffect(graphicsDropShadowEffect);
QVBoxLayout * vBoxLayout = new QVBoxLayout(this);
webEngineView_ = new QWebEngineView(this);
vBoxLayout->addWidget(webEngineView_);
webEngineView_->setGraphicsEffect(graphicsDropShadowEffect);
webEngineView_->graphicsEffect()->setEnabled(false);
webEngineView_->load(QUrl("https://www.baidu.com"));
webEngineView_->show();
}
ShadowWidget::~ShadowWidget()
{
delete ui;
}