qt软件开发中cef库的使用
qt软件中需要嵌入浏览器,用到qcefview,如何是使用的详细步骤。
使用QCEFView的详细步骤(含CEF处理)
使用QCEFView确实需要先准备好CEF库,但不需要你从源码完整编译CEF。以下是详细步骤说明:
一、是否需要下载和编译CEF?
需要下载CEF二进制包,但不需要从源码编译CEF:
- 必须下载CEF预编译的二进制包(包含已编译好的libcef等文件)
- 不需要自己用GN/ninja等工具从Chromium源码开始编译
- QCEFView在编译时会链接这些预编译好的CEF二进制文件
下载地址 https://cef-builds.spotifycdn.com/index.html
二、完整使用步骤
第1步:下载CEF二进制包
- 访问 CEF构建服务器
- 选择对应平台的标准发行版(如Windows选
cef_binary_xxx_windows64.tar.bz2)- 版本建议选择标注"stable"的
- 注意匹配你的系统架构(32位/64位)
- 解压到本地目录(例如
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项目中集成
- 在你的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
}
- 基本使用代码:
#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\"
三、注意事项
-
CEF版本匹配:QCEFView的README通常会注明兼容的CEF版本范围
-
子进程处理:
- CEF默认需要子进程(如renderer进程)
- 确保发布时包含所有子进程可执行文件
- 可通过设置关闭沙箱模式(但不推荐生产环境使用):
CefSettings settings; settings.no_sandbox = true;
-
DPI适配:
// 在main.cpp中尽早调用 #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif -
调试技巧:
- 启用CEF日志:
QCefSetting settings; settings.setLogSeverity(QCefSetting::LOGSEVERITY_VERBOSE); - 远程调试:访问
chrome://inspect
- 启用CEF日志:
这样你就完成了QCEFView的集成,无需自己编译CEF,但必须正确获取和部署CEF二进制文件。
浙公网安备 33010602011771号