我们正在尝试将一些应用程序从Qt4移植到Qt5.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这样的应用程序接口。
有人能找到解决这个问题的方法吗?
发布于 2016-04-06 08:37:53
正如在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);发布于 2015-08-12 00:03:56
不是的。部分解决方案已经提交给上游,但它只涵盖QtQuick,并且您不能在顶部有任何元素:
https://stackoverflow.com/questions/28183738
复制相似问题