QML与QCefView混合开发实战:从零构建嵌入式浏览器Demo

【STM32篇】驱动MXL90614红外测温模块 基于STM32的MLX906红外测温模块驱动编写 阅读详情

1. 为什么我们需要QML与QCefView的混合开发?

如果你是一个Qt开发者,尤其是做过桌面应用,肯定遇到过这样的纠结:一方面,Qt Widgets写业务逻辑、处理复杂交互非常顺手,C++的掌控感十足;另一方面,当你想做一个炫酷的动画、一个流畅的过渡效果,或者直接嵌入一个现代化的Web页面(比如用Vue或React做的管理后台)时,用纯Widgets去实现,那工作量简直让人头皮发麻。

这时候,混合开发就成了我们的“救命稻草”。而QCefView,就是这根“稻草”里最结实的那一根。简单说,QCefView就是一个把Chromium浏览器引擎(CEF)打包成Qt Widget的库。你可以把它想象成一个超级加强版的QWebEngineView,但能力更强、更底层、也更灵活。它让你能在Qt的窗口里,无缝嵌入一个完整的Chrome内核,既能显示任何现代网页,又能通过一套成熟的机制,让网页里的JavaScript和你的C++业务代码互相调用。

那么,为什么还要扯上QML呢?因为QML在构建动态、声明式的用户界面上有天然优势。想象一个场景:应用的主界面是QML做的,拥有流畅的动画和漂亮的视觉效果,但其中某个模块(比如一个内嵌的在线文档编辑器、一个数据可视化图表页面)需要Web技术来实现。这时候,在QML界面里弹出一个或者嵌入一个QCefView组件,就完美结合了二者的长处。我做过一个项目,主界面是QML的仪表盘,点击一个图表,弹出一个用QCefView承载的、基于ECharts的复杂报表页面,用户体验和开发效率都得到了巨大提升。

所以,QML + QCefView的组合,本质上是将本地应用的性能与掌控力,与Web技术的生态与表现力进行深度融合。它特别适合那些核心逻辑厚重、但部分UI又希望快速迭代或直接复用现有Web资源的项目,比如客户端软件中的帮助文档、在线支付模块、实时监控面板等。

2. 项目前期准备:环境、库与第一个Demo

好了,道理讲完了,咱们直接动手。我以Windows平台、Qt 5.9.8为例,带你走一遍。别担心版本,思路是通用的。

2.1 获取并编译QCefView库

首先,你得有QCefView库。推荐直接从GitHub仓库(CefView/QCefView)克隆最新代码。编译过程其实不难,但有几个坑我提前给你标出来。

  1. 克隆代码:打开你的终端(比如Git Bash),找个合适的目录,执行 git clone https://github.com/CefView/QCefView.git。
  2. 准备依赖:QCefView依赖CEF(Chromium Embedded Framework)二进制包。现在新版本的QCefView已经用CMake的FetchContent自动处理了,比老版本手动下载CEF方便太多。你基本不需要额外操作。
  3. 使用CMake生成工程:用CMake-GUI工具,源代码目录选你刚克隆的QCefView目录,构建目录建议新建一个build子文件夹。点击“Configure”,选择你的生成器(比如Visual Studio 2017 Win64),然后点击“Generate”。
  4. 编译:用Visual Studio打开生成的.sln解决方案文件,选择Debug或Release配置,直接生成解决方案。这个过程会下载CEF库并编译,需要一点时间,请保持网络通畅。

编译成功后,在build目录下的out文件夹里(或者项目根目录的out文件夹,取决于CMake配置),你会找到生成的QCefView目录。里面关键的包括:

  • include/:所有头文件。
  • lib/:编译好的QCefView.lib(或.a)库文件。
  • bin/:运行时需要的所有DLL文件(包括QCefView.dll和CEF的一系列依赖)。

我踩过的坑:第一次编译时,可能会因为网络问题下载CEF失败。多试几次,或者检查CMake的输出日志。另外,务必确保编译的架构(x86/x64)和你后续Qt项目的一致。

2.2 创建Qt Quick项目骨架

打开Qt Creator,我们新建一个项目:

  • 选择 Qt Quick Application - Empty。项目名我起为QmlCefDemo,和原始文章一致,方便你对照。
  • Qt版本选择5.9.8,或者你安装的其他5.x版本。Kit记得选对编译器(MSVC 2017 64bit等)。

创建好后,你会得到一个标准的QML项目结构:main.qml, main.cpp。我们先不动它。

2.3 引入QCefView SDK到项目

这一步是把编译好的库引入我们的工程。

  1. 在项目根目录(和.pro文件同级)下,新建一个文件夹,我叫它QCefViewSDK。这个名字清晰明了,表示这是第三方SDK。
  2. 把上一步编译输出out/QCefView下的include文件夹和lib文件夹,整个拷贝到QCefViewSDK里。
  3. 关键一步:在Qt Creator中,右键项目名 -> “添加现有文件...
qml项目中调用QCefView库 上一篇文章讲了如何编译QCefView库,现在讲如何在qml项目中用这个库,当然在qt widgets项目中调用是很容易的,这里就不多讲了,另外我的QT版本是5.9.8 这里我演示一个demo,开始运行弹出一个qml界面,qml界面有一个按钮,点击按钮则弹出一个嵌入了QCefView库的qt widget界面,如图: 1.打开qt creator,文件->新建文件或项目->Qt Qu... 阅读详情

相关推荐

STM32实战:5分钟搞定MXL90614红外测温模块的I2C驱动(附完整代码)

本文提供了一份快速集成MLX90614红外测温模块的STM32实战指南。通过详细的软件I2C驱动代码,重点解析了SMBus通信协议、CRC校验及温度数据转换,帮助开发者避开常见陷阱,实现5分钟内完成模块驱动并读取准确温度值。

wasm7browser的博客 348

STM32实现MLX90614非接触测温串口显示(标准库与HAL库实现)

STM32实现MLX90614非接触测温(标准库与HAL库实现)

XiaoCaiDaYong的博客 4961

Stm32f103c8t6驱动JX90614红外测温传感器

基于Stm32f103c8t6使用IIC驱动JX90614红外测温传感器

qq_44465154的博客 1687

红外测温模块避坑指南:STM32驱动MXL90614时你可能遇到的5个问题

本文针对STM32驱动MLX90614红外测温模块的实战应用,深度剖析了I2C通信失败、温度读数异常、通信间歇性中断、SMBus/PWM模式选择以及环境温度补偿等五个典型问题。文章提供了从硬件连接到波形诊断、数据校验、错误恢复机制到精度提升的完整解决方案与深度诊断思路,旨在帮助开发者高效避坑,确保测温系统稳定可靠。

weixin_29176179的博客 428

基于STM32的人体红外测温

本次介绍的是我的毕业设计基于STM32的人体红外测温枪的设计,大家参考可用于课程实验或毕业设计,希望对各位有所帮助!

l晚安 7872

17、 基于STM32的非接触红外测温器

去年直到今年世界出现新冠疫情大流行,而作为最目前最方便最基础的检测方法是测量体温,但一方面为了防疫需要,在检测过程中应尽量避免与他人直接接触,但又要在高效情况下,快速筛选出可疑人员,在这该过程中红外测温可以说是最好的选择。本次设计采用STM32单片机,使用5V电源供电,并且在按键的作用下可以进行测温、复位功能,并且在超过37℃是会触发蜂鸣器报警。

行走的皮卡丘 6325

MLX90614红外温度传感器驱动开发详解

MLX90614传感器是一款广泛应用于红外温度测量的高性能传感器,它能够精确测量物体表面温度,广泛应用于工业、医疗、消费电子产品中。本章将从基础的传感器结构开始,逐步深入介绍MLX90614的核心特性、应用范围以及其在实际项目中的重要性。MLX90614传感器拥有高精度和低功耗的特点,适用于非接触式温度检测。它基于MEMS技术,包含一个高精度的热电堆探测器和一个信号处理ASIC。这些核心组件协同工作,提供稳定的温度读数。

weixin_30700095的博客 1564

MLX90614红外测温传感器编程实战:STM32实现

MLX90614是一款高精度的非接触式红外温度传感器,广泛应用于工业、医疗和消费电子等领域。其核心优势在于能够快速精确地测量环境和物体表面温度,无需物理接触。MLX90614具备数字输出和模拟输出两种模式,便于不同系统的集成和使用。STM32微控制器是STMicroelectronics公司生产的一款广泛应用于嵌入式系统的高性能32位微控制器。其丰富的内核和外设资源,强大的处理能力以及灵活的电源管理方式使其成为工业、医疗、消费类电子等领域炙手可热的解决方案。

weixin_34885746的博客 1464

51单片机驱动MLX90614红外测温:I2C时序模拟与PEC校验避坑指南

红外测温传感器凭借非接触、响应快等优势,在工业监控与嵌入式项目中应用广泛。MLX90614作为典型红外热电堆传感器,内部集成了信号处理与数字接口,看似遵循I2C协议,实则采用SMBus通信规范,这对无硬件I2C外设的51单片机提出了时序模拟挑战。理解其RAM寄存器映射、数据字节序及SMBus重复起始位机制,是正确读取温度数据的前提。实际工程中,SDA/SCL开漏输出需外接上拉电阻,PEC校验字节不可忽略,地址位宽与ACK时序更是常见故障点。本文从I2C基础原理切入,结合模拟时序代码例程,系统梳理了51单片机

weixin_29183637的博客 171

红外温度测温成功mxl90614

51单片机实现红外温度测量,能够在LCD1602液晶显示板上进行显示,提供9014代码,能够实现其红外测量的功能。亲测好用

MXL90614红外温度 串口输出

使用stm32f103c8t6

mlx90614红外测温传感器stm32f103rct6

mlx90614红外测温传感器,使用stm32f103rct6实现,使用LCD屏幕显示。mlx90614红外测温传感器,使用stm32f103rct6实现,使用LCD屏幕显示。

90614的测温加485通讯

用PIC单片机写的90614来测温,还有485的通讯功能,方法简单实用

论文精读——A Comprehensive Survey of Continual Learning: Theory, Method and Application

为了应对现实世界的动态性,智能系统需要在其整个生命周期中逐步获取、更新、积累并利用知识。这种能力被称为Continue Learning(持续学习)。从广义上讲,持续学习明显受到catastrophic forgetting(灾难性遗忘)的限制,即学习新任务通常会导致旧任务的性能急剧下降。Continue Learning的核心目的有二,其一为(稳定性与可塑性间的权衡),其二为(足够的任务内/任务间泛化能力)。

xsddys的博客 1225

深入解析SAP MM模块OBYC自动科目分配机制:从T030表到实战配置

本文深入解析SAP MM模块中OBYC自动科目分配机制,阐明其作为连接物流与财务核心桥梁的作用。文章以T030表为核心,详细拆解其字段结构与检索逻辑,并通过采购收货、生产发料等实战场景,手把手演示配置步骤与关键要点,帮助读者掌握从原理到实践的完整知识体系,实现业财无缝对接。

nft7creator的博客 347

国产化软件设计:遵循信创要求,助力信息技术自主创新

支持国产操作系统、CPU、数据库和中间件。确保网络通信的身份鉴别、数据传输机密性和完整性。实现应用和数据层的身份鉴别、数据传输机密性完整性、数据存储机密性完整性。依托法院密码服务平台提供的商用密码能力。

qq_41186565的博客 3367

3D打印机之Marlin固件配置

一、Marlin固件必要配置 打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。 配置波特率 #define BAUDRATE 250000 配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。 2. 配置主板类型 第 134 行 #define MOTHERBOARD BOARD_MKS_GEN_L 找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子

acktomas的博客 2万+

模板 - 树上问题(树的直径、动态查询树的直径、树的重心)

整理的算法模板合集: ACM模板 目录一、树的直径树形DP两次DFS / BFS(找到直径的两个端点)二、动态修改树的边权并求每个时刻的直径(线段树)三、树的重心 一、树的直径 树的直径满足如下性质: 若有多条直径,则所有的直径之间皆有公共点。 直径的两端一定是叶子。 树中距离某一直径端点最远的点,至少有一个是该直径的另一个端点。 对于树上任意一个点,与之距离最远的一个点,至少有一个直径的端点。 给你一个无权无向的树。编写程序以输出该树中最长路径(从一个节点到另一个节点)的长度。在这

繁凡さん的博客 1674

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 270

SRS流媒体服务器在Windows下的安装

在之前的流媒体开发中(视频会议),我基本上使用nginx加模块的方式进行学习、测试,正式开发的时候改为服务器端用EasyDarwin,客户端用rtsp-simple-server(这些流媒体服务器的用法见我以前的博文),这样可以充分利用客户端的资源,降低服务器端的压力。在流媒体协议方案,我选择相对较快的rtsp。这个协议优点是支持UDP协议,优化好的环境下可以实现3秒以下的延迟,基本满足甲方要求,缺点就是不支持网页播放。

dgnankai的专栏 2010

[Dify] 实现“多知识库切换”功能的最佳实践

知识库切换是提升AI问答系统精准度的关键技术。本文介绍了Dify平台实现多知识库切换的三种方式:静态配置、元数据过滤和动态切换,分析了各自的优缺点。最佳实践建议包括:合理分库设计、意图分类、主库优先检索等。文章还提供了示例工作流程和注意事项,帮助构建更智能、精准的知识驱动型问答系统。通过合理切换知识库,可显著提升回答相关性和系统性能。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 438

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: KALI国内镜像源配置指南:快速下载与系统更新优化
下一篇: 【Paraview】利用Tracer和Macro宏自动化重复性操作:从录制到执行的完整指南
html8
博客等级 码龄8年 105粉丝 1092原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值