簡體   English   中英

QWebEnginePage中的透明背景

[英]Transparent Background in QWebEnginePage

我們正在嘗試將一些應用程序從Qt 4移植到Qt 5.4。 Qt 5.4有一個新的Web引擎。 我們曾經使QWebViewQWebPage的背景透明:

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這樣的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);

我希望它有所幫助。

沒有。部分解決方案已經提交到上游,但它只涵蓋了QtQuick,你不能擁有任何元素:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM