当前位置: 首页 > news >正文

Qt使用QWebEngineView一些记录

1.关闭软件警告:

Release of profile requested but WebEnginePage still not deleted. Expect troubles!

原因,系统退出关闭view,没有释放page。

解决办法:手动释放page  顺便把view也释放了。

Widget::~Widget()
{updateIniDate();Sleep(100);for(int i=0;i<webDateList.size();i++){webDate date=webDateList.at(i);SWebEngineView *view=date.view;QWebEnginePage *page=view->page();delete page;page=NULL;delete view;view=NULL;}delete ui;
}

2.获取QWebEngineView点击超链接

重写QWebEngineView中的createWindow函数

protected:QWebEngineView *createWindow(QWebEnginePage::WebWindowType type);QWebEngineView *SWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
{Q_UNUSED(type);emit httpDateUrl(this->url().toString());return this;// 自身打开超链接
}

3.获取QWebEngineView当前链接

QWebEngineView自带void urlChanged(const QUrl&)信号槽,直接使用即可

    SWebEngineView * v1=new SWebEngineView(w1);connect(v1,SIGNAL(urlChanged(QUrl)),this,SLOT(httpUr(QUrl)));

4.忽略证书错误

重写QWebEnginePage中的certificateError函数

但Qt5和Qt6不一样

目前找到都是Qt5的,有大佬知道Qt6的办法,欢迎评论区指点

protected:virtual bool certificateError(const QWebEngineCertificateError &/*error*/);bool WebEnginePage::certificateError(const QWebEngineCertificateError &certificateError)//忽略证书错误
{return true;
}WebEngineView * v1=new WebEngineView(this);WebEnginePage *page=new WebEnginePage();v1->setPage(page);

5.为了实现QWebEngineView类似 视频播放 全屏和退出全屏功能

新建一个showWidget,将QWebEngineView嵌入showWidget中,鼠标进入shwoWidget,出现放大缩小栏。点击进行对应事件触发。

showWidget::showWidget(QWidget *parent) :QWidget(parent),ui(new Ui::showWidget)
{ui->setupUi(this);this->installEventFilter(this);//捕获子窗口鼠标事件
}void showWidget::timerEvents()//鼠标长时间在widget内隐藏状态栏
{index++;if(index>=8){ui->widget->hide();index=0;if(timer->isActive()){timer->stop(); }}
}bool showWidget::eventFilter(QObject *object, QEvent *e)
{//鼠标进入状态栏显示   鼠标离开widget 状态栏隐藏//qDebug()<<e->type()<<object->objectName();if (e->type() == QEvent::Leave ){//qDebug()<<"鼠标离开"<<object->objectName();ui->widget->hide();index=0;if(timer->isActive()){timer->stop();}return QObject::eventFilter(object, e);;   // no di}if (e->type() == QEvent::Enter ){//qDebug()<<"鼠标进入"<<object->objectName();int w=this->width();if(w<1920){ui->widget->setGeometry(0,this->height()-60,w,60);ui->widget->show();index=0;if(!timer->isActive()){timer->start(500);}}return QObject::eventFilter(object, e);;   // no di}return QObject::eventFilter(object, e);
}

6.播放视频

Qt自带的dll因为版权等原因,不支持MP4、MP3,需要自己进行编译,编译比较麻烦,编译好之后,直接把dll拷贝exe所在目录即可。

后文库链接:使用环境 qt 5.15.2+vs2019  32位和64位  需要的自行下载

http://www.lryc.cn/news/212187.html

相关文章:

  • 【2023.10.30练习】C语言-判断等式成立
  • Wpf 使用 Prism 实战开发Day03
  • JavaEE-cookie和session
  • Java设计模式之命令模式
  • 记录一段帮朋友写的代码,使用牛顿-拉夫逊方法解方程
  • 滑动窗口限流算法实现一
  • 简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
  • EMQX内置Web管理控制台-Dashboard
  • 计算机网络重点概念整理-第四章 网络层【期末复习|考研复习】
  • 数组转树形数据
  • react动态插入样式
  • OkHttp网络框架深入理解-SSL握手与加密
  • Mac 安装使用NPM及常用命令
  • 利用 JSqlParser 防止 SQL 注入
  • 10.27~10.29数电第三次实验分析与问题
  • 【软考】14.3 设计模式
  • Mac docker+vscode
  • LLVM学习笔记(58)
  • C语言 每日一题 PTA 10.30 day8
  • nacos在linux中的安装、集群的配置、mysql生产配置
  • OpenAI 组建安全 AGI 新团队!应对AI“潘多拉魔盒”
  • 上网行为管理软件有哪些丨功能图文超详细介绍
  • DVWA-SQL Injection SQL注入
  • 【0基础学Java第四课】-- 逻辑控制
  • C++中的std::cout与std::cerr、std::clog
  • No authorization token was found
  • Kubernetes概述及其组件/核心组件
  • 毫米波雷达实时采集教
  • Java进阶(HashMap)——面试时HashMap常见问题解读 结合源码分析
  • Kotlin 使用@BindingAdapter编译出错