解决方案
可能是因为QGraphicsDropShadowEffect是基于QGraphicsEffect实现的,而QWebEngineView是基于Chromium内核实现的,两者的渲染方式不同,导致在同时使用时会出现性能问题。
为了解决这个问题,可以尝试以下方法:
- 使用QGraphicsOpacityEffect代替QGraphicsDropShadowEffect,它不会影响页面渲染性能。
- 将QWebEngineView放在一个QGraphicsProxyWidget中,然后对QGraphicsProxyWidget设置QGraphicsDropShadowEffect,这样可以避免直接对QWebEngineView设置QGraphicsDropShadowEffect导致的性能问题。
- 调整QGraphicsDropShadowEffect的参数,减少阴影的大小和模糊程度,以减少对性能的影响。
总之,需要根据具体情况进行调整和优化,以达到最佳的性能和效果。
添加QWebEngineView代码示例
以下代码在qt5.15.2中尝试
头文件中:
private:
Ui::MainWindow *ui;
QWebEngineView *webEngineView; //QWebEngineView浏览器控件
QGraphicsScene *graphicsScene; //图形场景
QGraphicsProxyWidget *proxyWidget; //图形代理窗口
CPP文件中:
//初始化一个QWebEngineView对象webEngineView
webEngineView = new QWebEngineView();
//初始化一个QGraphicsProxyWidget对象,并设置代理窗口为对象webEngineView。
proxyWidget = new QGraphicsProxyWidget();
proxyWidget->setWidget(webEngineView);
//初始化一个QGraphicsScene对象graphicsScene,并将proxyWidget添加到graphicsScene对象中去。
graphicsScene = new QGraphicsScene();
graphicsScene->addItem(proxyWidget);
//将graphicsScene对象设置为graphicsView的Scene,控件ui->graphicsView的类型是QGraphicsView
ui->graphicsView->setScene(graphicsScene);
1 条评论
?幽默类评语?