[英]Transparent Background in 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);
我希望它有所幫助。
沒有。部分解決方案已經提交到上游,但它只涵蓋了QtQuick,你不能擁有任何元素:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.