Qt WebEngine 实战 - 仿制浏览器(加载进度、放大、缩小、前进、后退、网站图标、历史记录、页面查找)

Qt绘制chrome风格的Tab标签 Qt实现类似于Chrome风格的Tab标签前言QStyle效果图绘制代码中的思路方式1方式2实现代码控件大小绘制样式其他tab的大小老版本chrome标签样式最后 前言 Qt中改变现有的控件的外观有多种方式,最常见的是使用样式表,根据样式表中的各种选择器并对属性、状态和sub-control进行样式的修改,也是比较方便的方式。最近由于要使用cef进行一个多标签浏览器的开发,需要修改tab的外观,这... 阅读详情

目录

一、成果展示

二、功能拆解:

0、网页加载逻辑

1、在标题栏,显示加载进度

2、 放大、缩小、重置

3、 前进、后退、刷新

4、 获取网站图标

5、显示历史记录,提供显示与跳转功能

6、界面内查找:

三、完整工程代码:


一、成果展示

QT 仿制浏览器,实现功能如下:

1、获取网址时,在标题栏,显示加载进度

2、查看:界面的 放大、缩小、重置 功能

3、界面导航功能:前进、后退、刷新 功能

4、获取网站图标

5、显示历史记录,并提供跳转功能

6、界面内查找:在当前界面用高亮模式,显示查找内容

图示:

二、功能拆解:

0、网页加载逻辑

1、当 QWebEngineView 开始加载时,会发射 loadStarted() 信号;

2、而每当一个网页元素(如一张图 一个脚本)加载完成时,都会发射 loadProgress() 信号 - 用于显示加载进度

3、最后加载全部完成后,会发射 loadFinished() 信号,如果加载成功,该信号的参数为 true,否则为 false

4、用 title() 获取 HTML 文档的标题,如果标题发生了改变,则会发射 titleChanged() 信号

5、如果需要自定义上下文(鼠标右键功能),则可以重新实现 contextMenuEvent(),然后用 pageAction() 获得的动作来填充菜单。

 

1、在标题栏,显示加载进度

说明:

每当一个网页元素(如一张图 一个脚本)加载完成时,都会发射 loadProgress() 信号

结果展示:

代码展示:

view = new QWebEngineView(this);
view->load(QUrl("http://www.qter.org/"));

// 从 0 到 100,表示进度;
progress = 0;

connect(view, &QWebEngineView::loadProgress, this, &MyWebEngine::setProgress);


void MyWebEngine::setProgress(int p)
{
    // 从 0 到 100,表示进度;
    progress = p;
    adjustTitle();
}

// 调整标题槽
void MyWebEngine::adjustTitle()
{
    if ( progress <= 0 || progress >= 100) {
        setWindowTitle(view-&g
Qt中浏览器QWebEngineView的使用1 当今的桌面软件开发,web化逐渐成为了趋势,VSCode,Atom等一系列优秀的软件都是基于github家的Electron(使用html,css,js来进行开发的桌面端应用程序),通俗得来说,就是把网页打包成一个在桌面运行的程序。优点是开发快速,前端也能开发桌面软件,并且跨平台,缺点是性能差速度慢,不能做成大型商业软件。类比一下notepad和vscode的打开速度就知道了。 回到本篇博客的目的,我们为什么要在Qt中嵌入一个网页?为什么不直接使用Electron开发整套软件? 1. 由于web端. 阅读详情

相关推荐

QT_QWebEngineView_自制浏览器_01

0 .需求 打开固定的站点网页,并能够正常浏览 能打开本地的单页面HTML5应用(Vue),能够跨域发送Ajax请求到API接口获取数据 拦截所有HTTP请求,请求发送之前添加自定义的请求头 JavaScript 与本地代码相互通信 比较简单的方案是 Electron, 使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架。它可以完美解决上面所有问题。但是用它打包出来的应用体积过大。 这里本着学习的态度,使用QT中的 QWebEngineView 来实现上面的需求。它与

paopao_wu的专栏 2698

01-Qt WebEngine模块开发环境搭建

QT WebEngine开发环境搭建

hurryddd 1万+

Qt Web混合开发: 使用QWebEngineView加载网页的最小示例

Qt是一款功能强大的跨平台应用程序开发框架,它提供了丰富的工具和库,用于创建各种类型的应用程序。在本文中,我们将介绍如何使用Qt中的QWebEngineView类加载网页,并提供一个最小示例来演示其用法。如果你需要更多的帮助和资源,可以参考Qt的官方文档和示例代码,它们提供了更详细的信息和使用方法。然后,我们可以创建一个新的Qt Widgets项目,并在项目文件中添加以下代码。你可以根据自己的需求扩展这个示例,添加更多功能,例如处理网页加载完成的信号、与JavaScript的交互等。窗口显示出来,并调用。

TechO_O的博客 311

Qt调用Chrome浏览器

最近有个小项目需要跳转网页,之前有了解过,但是没有在项目中使用过Qt网页嵌入;结合自己之前的博客,有如下两种技术可以实现我的需求:1、2、然后就想到了调用Chrome浏览器的方案!

贝勒里恩的博客 6733

仿谷歌浏览器的TabWidget

仿谷歌浏览器的TabWidget,实现Tab右侧的增加按钮,Tab可拖出,拖动时缩略图显示。用VS2012开发

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 326

智能座舱(七)——智能音频系统

本文剖析车载智能音频系统的核心技术,聚焦音响、功放、麦克风和广播收音机四大组件。音响系统通过多声道布局(如23扬声器阵列)结合动态声场校准算法,实现三维声场覆盖;功放系统采用高效D类技术,支持OTA音效调整和故障自愈;麦克风阵列运用波束成形技术实现精准拾音,并保障隐私安全;广播系统融合数字与网络技术提升音质。核心在于硬件标准化与算法差异化的协同,未来将朝集成化、AI个性化方向发展。

DC20160101的博客 1573

别再为CAD和GIS数据对不上而头疼了!一份完整的ArcGIS for AutoCAD坐标系定义与数据套合指南

本文详细介绍了如何通过ArcGIS for AutoCAD插件解决CAD与GIS数据坐标系不匹配的问题,实现数据的精准套合。文章从坐标系冲突分析、插件核心功能解析到五步标准化工作流,提供了完整的解决方案,帮助工程师和设计师提升跨平台协作效率。

weixin_42531886的博客 216

Fabric学习笔记(一)- Centos 7下的Fabric 2.3.2环境搭建

一、 环境准备 (一)、在VMware Workstation 15 安装一个Centos 7的虚拟环境,切换到图形化界面: 参考文章链接:Centos 7切换图形化界面 其中可能在yum groupinstall "X Window System"时会报错:Cannot find a valid baseurl for repo: base/7/x86_6,参考这篇文章即可:安装图形化界面报错解决 (二)、打开终端,安装所需的库: 切换root用户,输入命令:su root yum更新,输入命令:y

茕夜 2611

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4550

24届-Python面经(华为OD)

【摘要】24届非科班生通过栗栗姐指导成功转行华为OD。从4月4日零基础准备,经历机考(4/18)、测评(4/19)、资格面(5/7)、技术面(5/9-11)到5月17日获offer。全程栗栗姐提供题库、面经指导和实时跟进。虽遇压力面和技术短板,但在专业辅导下10天走完全流程。案例证明转行需自身努力+优质HR支持,栗栗姐团队提供多岗位(Java/Python等)、多地域(北上深等)OD机会,含笔试资料和全流程攻略。

2401_86909848的博客 1188

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5230

Intellij IDEA 使用教程(一)Jdk安装和配置

一.JDK下载 这里下载的是Java SE 8u181 64位版本。可以根据自己电脑配置来选择不同版本。 官网下载JDK 二.安装JDK 双击运行jdk-8u181-windows-x64.exe安装程序 选择安装目录,然后点击下一步 等待安装 安装JRE,就是java的运行环境,可以安装在java目录下 等待安装 安装完成。点击关闭。 三.java环境变量配置 关于环境变量的配置,...

岁月不饶人,我亦未曾饶过岁月 4054

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: QT 线程,实现生产者-消费者模式
下一篇: C++如何判断一个程序是 死锁 还是 死循环,如何进行问题定位与分析
LearnLHC
博客等级 码龄10年 183粉丝 149原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值