c – QWebEnginePage中的透明背景

前端之家收集整理的这篇文章主要介绍了c – QWebEnginePage中的透明背景前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在尝试将一些应用程序从Qt 4移植到Qt 5.4. Qt 5.4有一个新的Web引擎.我们曾经使QWebView和QWebPage的背景透明:
view = new QWebView(this);
QPalette palette = view->palette();
palette.setBrush(QPalette::Base,Qt::transparent);
view->page()->setPalette(palette);
view->setAttribute(Qt::WA_OpaquePaintEvent,false);

但是这段代码不适用于QWebEngineView和QWebEnginePage.关键是QWebEnginePage没有像setPalette这样的API.

谁能找到解决这个问题的方法

解决方法

https://bugreports.qt.io/browse/QTBUG-41960中所述,现在只需使用以下行即可:
webEngineView->page()->setBackgroundColor(Qt::transparent);

我在Qt 5.6中尝试过,它运行良好.

更新:为了使这个答案更有帮助,让我展示所有相关的代码.

在MainWindow中,我设置了这个:

setAttribute(Qt::WA_TranslucentBackground);
setAutoFillBackground(true);
setWindowFlags(Qt::FramelessWindowHint);

对于webEngineView对象,我设置了以下属性

webEngineView->setAttribute(Qt::WA_TranslucentBackground);
webEngineView->setStyleSheet("background:transparent");
webEnginePage = webEngineView->page();
// https://bugreports.qt.io/browse/QTBUG-41960
webEnginePage->setBackgroundColor(Qt::transparent);

我希望它有所帮助.

猜你在找的C&C++相关文章