Qt透明QWebView:过去的页面停留在新页面的背景中
Qt transparent QWebView: past page stay in background of new one
我有一个小应用程序,它有一个透明的QWebView,在带有字体的QTabWidget上显示一些HTML页面(它们的主体上都有一个style="background-color:transparent;"属性)。
透明度正在发挥作用,我可以在QWebView的内容旁边看到我的QTabWidget字体。但是,当我在QWebView中加载另一个页面时,旧页面在新页面的背景中仍然可见。就像页面只是一页一页地排列,没有关闭一样。
我不知道如何摆脱这种行为,也不知道它从哪里来!
我最近在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++。
相关文章:
- 如何在新的派生对象中获取基本对象的数据?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- VS2015/VC++ 在新类模板中禁用默认 #include "stdafx.h"
- 为什么Microsoft在新代码中使用结构而不是类?
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- 如何使用Qt在新窗口中显示视频帧
- 如何在新模板中使用模板化类?
- 在新作用域中使用unique_lock是否等效于在使用共享资源的工作结束时解锁调用
- 如何在新设计中迁移需要几个额外参数的函数
- 否则在新程序中没有以前的 if 错误
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- 如何在新的 C++17 并行算法中管理线程?
- 在新MPI_Isend之前使用MPI_Wait
- 将元音与字符串数据类型的字符串分开,并将其存储在新字符串中
- 如何在 Linux 中访问新页面时减少延迟
- 结构指针在"新"调用上给出已分配的地址?
- 在新表达式中,在内存分配后评估了初始化器
- 我的二传手在新类中不起作用(继承)
- Qt透明QWebView:过去的页面停留在新页面的背景中
- 在窗口中打开新页面C++