Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本
程序示例精选
Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!
前言
这篇博客针对<<Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
文章目录
一、所需工具软件
二、使用步骤
1. 引入库
2. 窗体界面
3. 运行结果
三、在线协助
一、所需工具软件
1. VS, Qt
2. Win10, Win11
二、使用步骤
1.引入库
代码如下(示例):
#include "QUrl"
#include <iostream>
#include<string>
#include<QKeyEvent>
#include<QFontDatabase>
#include<QWebEngineSettings>
#include<QWebEngineCookieStore>
![]()
2.窗体界面
代码如下(示例):
QT_BEGIN_NAMESPACEclass Ui_MainWindowClass
{
public:QAction *actionaa;QWidget *centralWidget;QGridLayout *gridLayout_3;QFrame *frame_2;QGridLayout *gridLayout_2;QComboBox *comboBox;QHBoxLayout *horizontalLayout;QPushButton *pushButton_4;QPushButton *pushButton_3;QPushButton *pushButton_2;QLineEdit *lineEdit;QPushButton *pushButton;QPushButton *pushButton_5;QPushButton *pushButton_6;QSpacerItem *horizontalSpacer;QSpacerItem *horizontalSpacer_2;QLabel *label;QFrame *frame;QGridLayout *gridLayout;QWebEngineView *webEngineView;QMenuBar *menuBar;QToolBar *mainToolBar;QStatusBar *statusBar;void setupUi(QMainWindow *MainWindowClass){if (MainWindowClass->objectName().isEmpty())MainWindowClass->setObjectName(QString::fromUtf8("MainWindowClass"));MainWindowClass->resize(716, 400);actionaa = new QAction(MainWindowClass);actionaa->setObjectName(QString::fromUtf8("actionaa"));QIcon icon;QString iconThemeName = QString::fromUtf8("dfds");if (QIcon::hasThemeIcon(iconThemeName)) {icon = QIcon::fromTheme(iconThemeName);} else {icon.addFile(QString::fromUtf8(":/MainWindow/png/\346\211\223\345\274\200\346\226\207\344\273\266\345\244\271-\347\272\242\350\211\262.png"), QSize(), QIcon::Normal, QIcon::Off);}actionaa->setIcon(icon);centralWidget = new QWidget(MainWindowClass);centralWidget->setObjectName(QString::fromUtf8("centralWidget"));gridLayout_3 = new QGridLayout(centralWidget);gridLayout_3->setSpacing(6);gridLayout_3->setContentsMargins(11, 11, 11, 11);gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));frame_2 = new QFrame(centralWidget);frame_2->setObjectName(QString::fromUtf8("frame_2"));QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);sizePolicy.setHorizontalStretch(1);sizePolicy.setVerticalStretch(0);sizePolicy.setHeightForWidth(frame_2->sizePolicy().hasHeightForWidth());frame_2->setSizePolicy(sizePolicy);QFont font;font.setFamily(QString::fromUtf8("3ds"));font.setPointSize(16);frame_2->setFont(font);frame_2->setFrameShape(QFrame::Box);frame_2->setFrameShadow(QFrame::Raised);gridLayout_2 = new QGridLayout(frame_2);gridLayout_2->setSpacing(6);gridLayout_2->setContentsMargins(11, 11, 11, 11);gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));comboBox = new QComboBox(frame_2);comboBox->addItem(QString());comboBox->addItem(QString());comboBox->addItem(QString());comboBox->setObjectName(QString::fromUtf8("comboBox"));QFont font1;font1.setFamily(QString::fromUtf8("\345\276\256\350\275\257\351\233\205\351\273\221"));font1.setPointSize(12);comboBox->setFont(font1);gridLayout_2->addWidget(comboBox, 0, 2, 1, 1);horizontalLayout = new QHBoxLayout();horizontalLayout->setSpacing(6);horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));pushButton_4 = new QPushButton(frame_2);pushButton_4->setObjectName(QString::fromUtf8("pushButton_4"));horizontalLayout->addWidget(pushButton_4);pushButton_3 = new QPushButton(frame_2);pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));horizontalLayout->addWidget(pushButton_3);pushButton_2 = new QPushButton(frame_2);pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));horizontalLayout->addWidget(pushButton_2);lineEdit = new QLineEdit(frame_2);lineEdit->setObjectName(QString::fromUtf8("lineEdit"));QFont font2;font2.setFamily(QString::fromUtf8("\345\276\256\350\275\257\351\233\205\351\273\221"));lineEdit->setFont(font2);horizontalLayout->addWidget(lineEdit);pushButton = new QPushButton(frame_2);pushButton->setObjectName(QString::fromUtf8("pushButton"));QFont font3;font3.setFamily(QString::fromUtf8("\345\276\256\350\275\257\351\233\205\351\273\221"));font3.setPointSize(16);pushButton->setFont(font3);horizontalLayout->addWidget(pushButton);pushButton_5 = new QPushButton(frame_2);pushButton_5->setObjectName(QString::fromUtf8("pushButton_5"));pushButton_5->setFont(font2);horizontalLayout->addWidget(pushButton_5);pushButton_6 = new QPushButton(frame_2);pushButton_6->setObjectName(QString::fromUtf8("pushButton_6"));pushButton_6->setFont(font2);horizontalLayout->addWidget(pushButton_6);horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout->addItem(horizontalSpacer);gridLayout_2->addLayout(horizontalLayout, 0, 0, 1, 1);horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);gridLayout_2->addItem(horizontalSpacer_2, 0, 1, 1, 1);label = new QLabel(frame_2);label->setObjectName(QString::fromUtf8("label"));label->setFont(font2);gridLayout_2->addWidget(label, 0, 3, 1, 1);gridLayout_3->addWidget(frame_2, 0, 0, 1, 1);frame = new QFrame(centralWidget);frame->setObjectName(QString::fromUtf8("frame"));QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Preferred);sizePolicy1.setHorizontalStretch(0);sizePolicy1.setVerticalStretch(6);sizePolicy1.setHeightForWidth(frame->sizePolicy().hasHeightForWidth());frame->setSizePolicy(sizePolicy1);frame->setFrameShape(QFrame::Box);frame->setFrameShadow(QFrame::Raised);gridLayout = new QGridLayout(frame);gridLayout->setSpacing(5);gridLayout->setContentsMargins(11, 11, 11, 11);gridLayout->setObjectName(QString::fromUtf8("gridLayout"));gridLayout->setContentsMargins(0, 0, 0, 0);webEngineView = new QWebEngineView(frame);webEngineView->setObjectName(QString::fromUtf8("webEngineView"));webEngineView->setUrl(QUrl(QString::fromUtf8("about:blank")));gridLayout->addWidget(webEngineView, 0, 0, 1, 1);gridLayout_3->addWidget(frame, 1, 0, 1, 1);mainToolBar->addAction(actionaa);mainToolBar->addSeparator();retranslateUi(MainWindowClass);QMetaObject::connectSlotsByName(MainWindowClass);} // setupUivoid retranslateUi(QMainWindow *MainWindowClass){MainWindowClass->setWindowTitle(QCoreApplication::translate("MainWindowClass", "MainWindow", nullptr));actionaa->setText(QCoreApplication::translate("MainWindowClass", "aa", nullptr));
#if QT_CONFIG(shortcut)actionaa->setShortcut(QCoreApplication::translate("MainWindowClass", "Ctrl+O", nullptr));
#endif // QT_CONFIG(shortcut)comboBox->setItemText(0, QString());comboBox->setItemText(1, QCoreApplication::translate("MainWindowClass", "www.baidu.com", nullptr));comboBox->setItemText(2, QCoreApplication::translate("MainWindowClass", "www.csdn.net", nullptr));};namespace Ui {class MainWindowClass: public Ui_MainWindowClass {};
} // namespace UiQT_END_NAMESPACE#endif // UI_MAINWINDOW_H
![]()
3.运行结果如下


三、在线协助:
如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!
1)远程安装运行环境,代码调试
2)Qt, C++, Python入门指导
3)界面美化
4)软件制作
当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
博主推荐文章:python人脸识别统计人数qt窗体-CSDN博客
博主推荐文章:Python Yolov5火焰烟雾识别源码分享-CSDN博客
Python OpenCV识别行人入口进出人数统计_python识别人数-CSDN博客
个人博客主页:alicema1111的博客_CSDN博客-Python,C++,网页领域博主
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog
相关文章:
Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本
程序示例精选 QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版…...
这场科技巨变,有生之年有希望
见到一文,遂分享欲爆棚,总结如下。 具有人类水平的人工智能大约什么时候可以出现? 人类水平的人工智能,指的是,不需要借助人类,机器能够比人类更好地完成每项任务。 针对这个问题,有家机构在201…...
zemax优化功能
1、三种优化方法 zemax的三种优化方法中,局部优化会找到局部的极小值点,全局优化会找到整体的最小值点。 锤形优化适用于先用全局优化找到大概值后,进一步完善光学系统 对于评价函数单调或者局部最小值就是全局最小值的情况,使…...
Centos8关闭IPV6
编辑 /etc/sysctl.conf 文件。 vi /etc/sysctl.conf 放置以下条目以禁用所有适配器的 IPv6。 net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 您可以使用以下条目为特定网络接口禁用 IPv6。 (假设网卡名称是enp0s3)。 n…...
华为OD七日集训第4期 - 按算法分类,由易到难,循序渐进,玩转OD
目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第4期五、精心挑选21道高频100分经典题目,作为入门。第1天、数据结构第2天、滑动窗口第3天、贪心算法第4天、二分查找第5天、分治递归第6天、深度优先搜索dfs算法第7天、宽度优选算法,回溯法 六…...
flutter 抓包工具charles
本来的代码是忽略证书 ///忽略https证书校验,也就是能请求https的地址了(_dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate (HttpClient client) {client.badCertificateCallback (X509Certificate cert, String host, int port) > tr…...
——二叉树
二叉树种类 二叉树有两种主要的形式:满二叉树和完全二叉树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 完全二叉树 在完全二叉树中,除了最底层节点可能没…...
【linux命令讲解大全】103.Linux目录堆栈命令 dirs 的使用方法和选项详解
文章目录 dirs概要主要用途选项参数返回值例子注意 从零学 python dirs 显示目录堆栈。 概要 dirs [-clpv] [N] [-N] 主要用途 显示目录堆栈。 清空目录堆栈。 选项 -c:清空目录堆栈。-l:堆栈内以~开头的目录在显示时展开。-p:将目录堆…...
vue3项目应用font awesome6
element-plus框架的图标icon种类较少,一般无法涵盖所有业务情况 这时候引入font awesome6免费版,图标库非常丰富,一般可以满足所有业务场景 官网:https://fa6.dashgame.com/Font Awesome 6,一套始终绝佳的图标字体库…...
【JavaScript】JS语法入门到实战
文章目录 一、初识JavaScript1. 什么是JavaScript?2. JavaScript 和 HTML 和 CSS 之间的关系3. JavaScript的运行过程4. JavaScript的组成 二、JavaScript的书写形式三、变量1. 输入输出2. 变量的使用3. 数据类型 四、运算符五、分支和循环语句1. 分支语句2. 循环语…...
【Linux】工具Gdb调试轻度使用(C++)
目录 一、Gdb背景 二、Gdb基本命令 【2.1】list | l 【2.2】break | b 【2.5】delete | d 【2.6】disable 【2.7】enable 【2.3】info 【2.4】info locals 【2.6】run | r 【2.7】next | n 【2.8】step | s 【2.9】 continue | c 【2.10】bt 【2.11】finish 三…...
linux xhost命令
xhost命令 XHOST 用于管理允许访问系统上 X Server 的主机和用户列表,这些主机和用户都可以从其他主机和同一系统上的其他用户访问。 通常,远程访问将被禁用,因为它会带来安全风险。 但是,如果我们需要在远程计算机上运行 GUI &…...
linux在线源码阅读网站
下面的网站可以在线阅读linux源码,提供了类似github上分析工具,自动具备符号关联的作用,可以方便的供用户分析代码。除了可以分析linux源码外,该网站还可以分析一些其它源码,例如qt等 这个网站有许多功能,…...
css中只使用vue的变量
参考:https://blog.csdn.net/FellAsleep/article/details/130617163 1、必须作用在用一个div上 2、变量必须有双横杠“–” <spanclass"bb" :style"spanStyle">11</span>data() {return {spanStyle: {"--color": #bfa /…...
华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 【更新中。。。】
目录 引出起因(si因)解决报错诶嘿,连上了 不出意外,就出意外了打开数据库what??? 找华为云求助教训:备份教训:密码 解决1.改密码2.新建一个MySQL,密码设置复杂…...
如何查询成绩或工资
为什么每次查询成绩或者工资的时候都觉得麻烦又耗时呢?在过去,我们可能需要去学校或公司的相关部门,填写繁琐的表格,然后等待工作人员进行查询和处理。这不仅浪费了我们宝贵的时间,还可能出现查询结果不准确或者遗漏的…...
FPGA原理与结构——时钟IP核的使用与测试
一、前言 本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考: FPGA原理与结构——时钟IP核原理学习https://blog.c…...
手搓消息队列【RabbitMQ版】
什么是消息队列? 阻塞队列(Blocking Queue)-> 生产者消费者模型 (是在一个进程内)所谓的消息队列,就是把阻塞队列这样的数据结构,单独提取成了一个程序,进行独立部署~ --------&…...
Oracle VM VirtualBox 安装 Ubuntu Linux
Virtual Box VirtualBox是一个强大的、面向个人用户或者企业用户的虚拟机产品,其支持x86以及AMD64/Intel64的计算架构,功能特性丰富、性能强劲,支持GPL开源协议,其官方网址是www.virtualbox.org,由Oracle开源…...
3D WEB轻量化引擎HOOPS Commuicator技术概览(一):数据导入与加载
HOOPS Communicator是一款功能强大的SDK,适用于基于Web的高级工程应用程序,代表HOOPS Web平台的Web开发组件。使用HOOPS Communicator,您可以构建一个在 Web浏览器中提供3D模型的Web应用程序。 HOOPS Communicator可以本地加载多种模型格式。…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
