Ter*_*yLu 7 c++ qt transparent qt5.4 qtwebengine
我们正在尝试将一些应用程序从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);
Run Code Online (Sandbox Code Playgroud)
但是这个代码不适合工作QWebEngineView和QWebEnginePage.关键是QWebEnginePage没有像这样的API setPalette.
谁能找到解决这个问题的方法?
如https://bugreports.qt.io/browse/QTBUG-41960中所述,现在只需使用以下行即可:
webEngineView->page()->setBackgroundColor(Qt::transparent);
Run Code Online (Sandbox Code Playgroud)
我在Qt 5.6中尝试过,它运行良好.
更新:为了使这个答案更有帮助,让我展示所有相关的代码.
在MainWindow中,我设置了这个:
setAttribute(Qt::WA_TranslucentBackground);
setAutoFillBackground(true);
setWindowFlags(Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)
对于该webEngineView对象,我设置了以下属性:
webEngineView->setAttribute(Qt::WA_TranslucentBackground);
webEngineView->setStyleSheet("background:transparent");
webEnginePage = webEngineView->page();
// https://bugreports.qt.io/browse/QTBUG-41960
webEnginePage->setBackgroundColor(Qt::transparent);
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |