【问题标题】:Transparent Background in QWebEnginePageQWebEnginePage 中的透明背景
【发布时间】:2015-03-26 20:24:32
【问题描述】:

我们正在尝试将一些应用程序从 Qt 4 移植到 Qt 5.4。 Qt 5.4 有一个新的网络引擎。我们曾经让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。

谁能找到解决这个问题的方法?

【问题讨论】:

    标签: c++ qt transparent qt5.4 qtwebengine


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,这根本不起作用。当我在透明窗口(显示在另一个窗口的顶部)内的 webEngineView 中使用此代码时,仅包含带有文本的 div 的网站的背景保持白色。使用 Qt 5.7 测试。使用带有 QGraphicsOpacityEffect 的不同小部件可以工作,因此透明度确实有效......似乎不适用于 QWebEngineView。
    • 再摆弄一下,似乎 PAGE 的背景确实变得不可见了。所以我想它确实有效。但是,QWebEngineVIEW 的背景仍然是白色的,所以它并没有多大帮助。
    • 在您的 HTML 中,您是否在 CSS 中使用了透明背景?像这样:身体{背景:透明; } 否则,我认为默认情况下 HTML 将具有白色背景。
    • 是的,当然。我这样做了,正如我所说,颜色实际上是应用的。但背后总是有白色。而且Qt端的QWebEngineView后面没有什么可以是白色的,所以一定是视图。 A 现在放弃了,我自己在做浏览器网站的渲染。
    • 在主窗口中,我有这个: setAttribute(Qt::WA_TranslucentBackground);设置自动填充背景(真); setWindowFlags(Qt::FramelessWindowHint);对于视图,我有这些: webEngineView->setAttribute(Qt::WA_TranslucentBackground); webEngineView->setStyleSheet("背景:透明"); webEnginePage = webEngineView->page(); // bugreports.qt.io/browse/QTBUG-41960 webEnginePage->setBackgroundColor(Qt::transparent);我希望它有所帮助,我还没有针对 Qt5.7 进行过测试,但我认为它应该以类似的方式工作。
    【解决方案2】:

    没有。部分解决方案已提交给上游,但它仅涵盖 QtQuick,并且您不能在顶部放置任何元素:

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

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2019-02-07
      • 2020-10-15
      • 2017-06-22
      • 2010-10-20
      • 2011-02-01
      相关资源
      最近更新 更多