微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

我希望它有所帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐