QCefView使用指南[源码]

QCefView使用指南[源码]QCefView 示例项目 本项目演示了 QCefView 框架的基本使用方法 包括 JavaScript 与 C 之间的交互 项目结构 CefMain main cpp 程序入口 mainwindow h 主窗口头文件 mainwindow cpp 主窗口实现 mainwindow ui Qt Designer UI 文件

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

# QCefView 示例项目

本项目演示了 QCefView 框架的基本使用方法,包括 JavaScript 与 C++ 之间的交互。

项目结构

CefMain/
├── main.cpp              # 程序入口
├── mainwindow.h          # 主窗口头文件
├── mainwindow.cpp        # 主窗口实现
├── mainwindow.ui         # Qt Designer UI 文件
├── CMakeLists.txt        # CMake 构建配置
├── HTML/
│   └── index.html        # Web 资源页面
└── README.md             # 本说明文件

功能特性

1. invokeMethod 方式调用 C++

JavaScript 通过 window.CallBridge.invokeMethod 调用 C++ 方法:

function onInvokeMethodClicked(name, ...arg) { window.CallBridge.invokeMethod(name, ...arg); } 

C++ 端处理:

  • minWindow - 最小化窗口
  • maxWindow - 最大化窗口
  • normalWindow - 恢复正常窗口
  • closeWindow - 关闭窗口
  • cppLog - 输出日志到 C++ 控制台
  • requestData - 请求 C++ 数据并通过事件广播返回

2. CefViewQuery 方式调用 C++

使用请求 - 应答模式进行异步调用:

let query = { id: 1, request: "Hello CPP", onSuccess: function(response) { console.log("Success: " + response); }, onFailure: function(error_code, error_message) { console.log("Failure: " + error_message); } }; window.CefViewQuery(query); 

3. C++ 调用 JavaScript

通过事件广播触发 JS 回调:

QCefEvent event("reqData"); event.arguments().append("Hello world! CPP DATA."); _pCefView->broadcastEvent(event); 

JavaScript 端监听:

window.CallBridge.addEventListener("reqData", function(data) { console.log("Received: " + data); }); 

依赖要求

系统依赖

  • Qt 5.15+ 或 Qt 6.x
  • CEF (Chromium Embedded Framework)
  • QCefView 库

CEF 二进制包

从以下地址下载 CEF 二进制发行包: https://cef-builds.spotifycdn.com/index.html

编译说明

Linux 环境

# 创建构建目录 mkdir build && cd build # 配置 CMake cmake .. # 编译 make -j$(nproc) # 运行 ./CefMain 

CMake 配置注意事项

在 Linux 上使用 CEF 时需要特别注意库的加载顺序,libcef.so 需要最先加载:

target_link_libraries(CefMain PRIVATE "-Wl,--no-as-needed -lcef" QCefView Qt${QT_VERSION_MAJOR}::Widgets ) 

参考资料

  • QCefView 官方文档
  • CSDN 博客原文
  • QCefView 详细教程

技术要点

  1. 资源目录配置:使用 addLocalFolderResource 注册本地资源目录
  2. 信号槽连接:连接 invokeMethodcefQueryRequestconsoleMessage 信号
  3. 异步通信:所有 JS-C++ 通信都是异步的
  4. 控制台日志:JS 的 console.log 可通过 consoleMessage 信号在 C++ 端捕获

运行效果

启动程序后将显示一个内嵌浏览器的窗口,加载 index.html 页面,可以通过页面上的按钮测试各种交互功能。


注意:本项目需要在已安装 QCefView 和 CEF 的环境中编译运行。

小讯
上一篇 2026-04-08 21:09
下一篇 2026-04-08 21:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/251560.html