qt软件开发中cef库的使用

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二进制文件。

posted @ 2025-05-24 16:13  sec001  阅读(780)  评论(0)    收藏  举报