8

一部のアプリケーションを 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のような API がないことsetPaletteです。

誰でもこれを解決する方法を見つけることができますか?

4

2 に答える 2

10

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);
于 2016-04-06T00:37:53.480 に答える