qt软件中需要嵌入浏览器,用到qcefview,如何是使用的详细步骤。

使用QCEFView的详细步骤(含CEF处理)

使用QCEFView确实需要先准备好CEF库,但不需要你从源码完整编译CEF。以下是详细步骤说明:

一、是否需要下载和编译CEF?

需要下载CEF二进制包,但不需要从源码编译CEF

  1. 必须下载CEF预编译的二进制包(包含已编译好的libcef等文件)
  2. 不需要自己用GN/ninja等工具从Chromium源码开始编译
  3. QCEFView在编译时会链接这些预编译好的CEF二进制文件

    下载地址 https://cef-builds.spotifycdn.com/index.html

二、完整使用步骤

第1步:下载CEF二进制包

  1. 访问 CEF构建服务器
  2. 选择对应平台的标准发行版(如Windows选cef_binary_xxx_windows64.tar.bz2
    • 版本建议选择标注"stable"的
    • 注意匹配你的系统架构(32位/64位)
  3. 解压到本地目录(例如D:/cef_binary_120.0.6099.109_windows64

第2步:获取QCEFView

git clone https://github.com/CefView/QCEFView.git
cd QCEFView

第3步:编译QCEFView

Windows示例(VS2019):

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX=../install -DCEF_ROOT=D:/cef_binary_120.0.6099.109_windows64
cmake --build . --config Release --target install

Linux示例:

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../install -DCEF_ROOT=/path/to/cef_binary
make -j8
make install

第4步:在Qt项目中集成

  1. 在你的Qt项目.pro文件中添加:
# 添加QCEFView库路径
LIBS += -L$$PWD/../QCEFView/install/lib -lQCefView # 添加包含路径
INCLUDEPATH += $$PWD/../QCEFView/install/include
DEPENDPATH += $$PWD/../QCEFView/install/include # Windows需要额外链接库
win32 {
LIBS += -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
}
  1. 基本使用代码:
#include <QCefView.h>

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建CEF视图
QCefView* cefView = new QCefView("https://www.qt.io", this);
setCentralWidget(cefView); // 处理页面加载事件
connect(cefView, &QCefView::loadingStateChanged, [](bool isLoading) {
qDebug() << "Loading state:" << isLoading;
});
}

第5步:部署应用程序

需要随你的应用一起发布以下文件:

Windows必须包含:

your_app.exe
QCefView.dll
libcef.dll
chrome_elf.dll
icudtl.dat
snapshot_blob.bin
v8_context_snapshot.bin
/
|---locales/ (全部.locale文件)
|---resources/ (全部文件)
|---swiftshader/ (全部文件)

典型部署脚本示例(Windows):

xcopy /y /s "QCEFView\install\bin\QCefView.dll" "build\"
xcopy /y /s "cef_binary\Release\*.dll" "build\"
xcopy /y /s "cef_binary\Release\*.bin" "build\"
xcopy /y /s "cef_binary\Resources\*" "build\"

三、注意事项

  1. CEF版本匹配:QCEFView的README通常会注明兼容的CEF版本范围

  2. 子进程处理

    • CEF默认需要子进程(如renderer进程)
    • 确保发布时包含所有子进程可执行文件
    • 可通过设置关闭沙箱模式(但不推荐生产环境使用):
      CefSettings settings;
      settings.no_sandbox = true;
  3. DPI适配

    // 在main.cpp中尽早调用
    #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    #endif
  4. 调试技巧

    • 启用CEF日志:
      QCefSetting settings;
      settings.setLogSeverity(QCefSetting::LOGSEVERITY_VERBOSE);
    • 远程调试:访问 chrome://inspect

这样你就完成了QCEFView的集成,无需自己编译CEF,但必须正确获取和部署CEF二进制文件。

qt软件开发中cef库的使用的更多相关文章

  1. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  2. 【大型软件开发】浅谈大型Qt软件开发(二)面向未来开发——来自未来的技术:COM组件。我如何做到让我们的教学模块像插件一样即插即用,以及为什么这么做。

    前言 最近我们项目部的核心产品正在进行重构,然后又是年底了,除了开发工作之外项目并不紧急,加上加班时间混不够了....所以就忙里偷闲把整个项目的开发思路聊一下,以供参考. 鉴于接下来的一年我要进行这个 ...

  3. 【大型软件开发】浅谈大型Qt软件开发(三)QtActive Server如何通过COM口传递自定义结构体?如何通过一个COM口来获得所有COM接口?

    前言 最近我们项目部的核心产品正在进行重构,然后又是年底了,除了开发工作之外项目并不紧急,加上加班时间混不够了....所以就忙里偷闲把整个项目的开发思路聊一下,以供参考. 鉴于接下来的一年我要进行这个 ...

  4. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  5. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  6. 软件开发中的完整测试所包括的环节UT、IT、ST、UAT

    软件开发中的完成测试环境所包括的环节包括:UT.IT.ST.UAT UT = Unit Test 单元测试 IT = System Integration Test 集成测试ST = System T ...

  7. 关于软件开发中兼容win7注册表的解决方案

    关于软件开发中兼容win7注册表的解决方案   编写人:CC阿爸 2014-3-14 l  近来在开发一winform程序时,发现在xp 系统访问注册表一切正常.可偏这个时候,微软又提醒大家.Xp今年 ...

  8. 软件开发中 SQL SERVER 任务的用法

    在软件开发中,经常性会用到定时任务.这个时候你可能会想到线程.但是事实中,线程方法比较麻烦.容易出错,资源竞争等问题,设计起来让你很头痛. 现在给大家提供一个新的思路,用SQL SERVER 的任务管 ...

  9. Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向

    Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主    过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) ...

  10. UML在软件开发中各个阶段的作用和意义

    经典的软件工程思想将软件开发分成5个阶段:需求分析,系统分析与设计,系统实现,测试及维护五个阶段. 之所以如此,是因为软件开发中饣含了物和人的因素,存在着很大的不确定性,这使得软件工程不可能像理想的, ...

随机推荐

  1. ANSYS 导出节点的位移数据

    1. 数据保存 确定待提取的节点编号: 获取节点位移变量: 将节点位移变量存储到数组中,用于数据传递: ! 输出对应节点的位移到csv文件 ! 注意同时导入.db和.rst,并切换到/post26模块 ...

  2. 【Git】在 Idea 中使用 Git

    在 Idea 中使用 Git 1 安装 Git 核心程序 根据自己的电脑操作系统从 Git 官网 https://git-scm.com/ 下载对应的 Git 核心程序. 以 git-2.21.0 为 ...

  3. python练习-爬虫(续)

    流程: 1 设置url 2 设置消息头 3 设置消息体 4 获取响应 5 解析相应 6 验证数据 接下来就是查询数据了. # 识别图片中的文字 #image = Image.open('captcha ...

  4. FastAPI依赖注入系统及调试技巧

    title: FastAPI依赖注入系统及调试技巧 date: 2025/04/11 15:00:50 updated: 2025/04/11 15:00:50 author: cmdragon ex ...

  5. Robot Framework全局变量集合取值

    在一次测试中,可能需要使用多个不同的会员,即需要多注册多个会员.如此配置单一参数化是无法满足对所有注册会员名的统一管理,这里引入参数变量组来实现 步骤如下: 1.脚本目录点击总目录,右键点击New R ...

  6. <HarmonyOS第一课04>应用程序框架基础

    视频链接: https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497122909477?ha_sou ...

  7. redis没有启动会报什么错???

    以下是报错信息,应该是根据项目不同,具体的不太一样,但我们能清晰的看到一句 加红,加大,加粗 Caused by: redis.clients.jedis.exceptions.JedisConnec ...

  8. .NET Core 和 .NET 标准类库项目类型有什么区别?

    在 Visual Studio 中,至少可以创建三种不同类型的类库: 类库(.NET Framework) 类库(.NET 标准) 类库 (.NET Core) 虽然第一种是我们多年来一直在使用的,但 ...

  9. DeepSeek+Coze实战:从0到1搭建小红书图文改写智能体(喂饭级教程)

    大家好,我是汤师爷,专注AI智能体分享~ 还在为小红书笔记创作发愁吗? 每天都要绞尽脑汁想文案,看着别人的爆款笔记却不知道如何模仿? 今天,我就教你如何利用AI智能体,轻松实现小红书图文改写,让创作效 ...

  10. Docker不装C盘

    Docker默认安装在C盘,这未来随着docker使用必定会导致C盘空间吃紧.所以本文提前进行空间布局,将docker默认安装路径软链接到D盘.软链接D盘Docker默认安装路径为C:\Program ...