首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebEnginePage中的透明背景

QWebEnginePage中的透明背景
EN

Stack Overflow用户
提问于 2015-01-28 10:46:00
回答 2查看 3.6K关注 0票数 7

我们正在尝试将一些应用程序从Qt4移植到Qt5.4。Qt 5.4有一个新的web引擎。我们曾经让QWebViewQWebPage的背景是透明的:

代码语言:javascript
复制
view = new QWebView(this);
QPalette palette = view->palette();
palette.setBrush(QPalette::Base, Qt::transparent);
view->page()->setPalette(palette);
view->setAttribute(Qt::WA_OpaquePaintEvent, false);

但是这段代码不适用于QWebEngineViewQWebEnginePage。关键是QWebEnginePage没有像setPalette这样的应用程序接口。

有人能找到解决这个问题的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2016-04-06 08:37:53

正如在https://bugreports.qt.io/browse/QTBUG-41960中提到的,现在只需使用下面这行代码就可以了:

代码语言:javascript
复制
webEngineView->page()->setBackgroundColor(Qt::transparent);

我已经在Qt 5.6中尝试过了,它工作得很好。

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

在MainWindow中,我设置了以下内容:

代码语言:javascript
复制
setAttribute(Qt::WA_TranslucentBackground);
setAutoFillBackground(true);
setWindowFlags(Qt::FramelessWindowHint);

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

代码语言:javascript
复制
webEngineView->setAttribute(Qt::WA_TranslucentBackground);
webEngineView->setStyleSheet("background:transparent");
webEnginePage = webEngineView->page();
// https://bugreports.qt.io/browse/QTBUG-41960
webEnginePage->setBackgroundColor(Qt::transparent);
票数 9
EN

Stack Overflow用户

发布于 2015-08-12 00:03:56

不是的。部分解决方案已经提交给上游,但它只涵盖QtQuick,并且您不能在顶部有任何元素:

https://bugreports.qt.io/browse/QTBUG-41960

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28183738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档