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可以本地加载多种模型格式。…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
