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)克隆最新代码。编译过程其实不难,但有几个坑我提前给你标出来。
- 克隆代码:打开你的终端(比如Git Bash),找个合适的目录,执行
git clone https://github.com/CefView/QCefView.git。 - 准备依赖:QCefView依赖CEF(Chromium Embedded Framework)二进制包。现在新版本的QCefView已经用CMake的FetchContent自动处理了,比老版本手动下载CEF方便太多。你基本不需要额外操作。
- 使用CMake生成工程:用CMake-GUI工具,源代码目录选你刚克隆的QCefView目录,构建目录建议新建一个
build子文件夹。点击“Configure”,选择你的生成器(比如Visual Studio 2017 Win64),然后点击“Generate”。 - 编译:用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到项目
这一步是把编译好的库引入我们的工程。
- 在项目根目录(和
.pro文件同级)下,新建一个文件夹,我叫它QCefViewSDK。这个名字清晰明了,表示这是第三方SDK。 - 把上一步编译输出
out/QCefView下的include文件夹和lib文件夹,整个拷贝到QCefViewSDK里。 - 关键一步:在Qt Creator中,右键项目名 -> “添加现有文件...


193

被折叠的 条评论
为什么被折叠?



