我有一个带透明 QWebView 的小应用程序,显示一些 HTML页面(它们都有一个style =“background-color:transparent;”属性)在带有字体的 QTabWidget 上。
透明度正常,我可以在 QWebView 的内容旁边看到 QTabWidget 的字体。但是当我在 QWebView 中加载另一个页面时,旧的页面仍然可以在新的页面中看到。就好像这些页面只是一个在另一个上面排列而不是关闭。
我不知道如何摆脱这种行为以及它可能来自哪里!
答案 0 :(得分:0)
我最近和QtJambi有类似的问题。我加载的页面是动态的(使用javascript和css3的动画),并且每次有些组件移动或更改时,Web视图都会绘制新的渲染而不会清除旧渲染。
我今天找到了解决方案。我编写了一个继承自QWebView的类,并在paintEvent方法中将背景设置为透明。每次重新绘制Web视图时,背景都设置为透明。
这是我的Java代码
public class WebBrowserTestQWebView extends QWebView
{
@Override
public void paintEvent(QPaintEvent event)
{
QPalette palette = this.palette();
palette.setBrush(QPalette.ColorRole.Base, new QBrush(new QColor(Qt.GlobalColor.transparent)));
this.setPalette(palette);
this.setAttribute(Qt.WidgetAttribute.WA_OpaquePaintEvent, false);
super.paintEvent(event);
}
}
我猜它也适用于C ++。