QT 内嵌CEF(2)

本文介绍如何在QT中嵌入Chromium Embedded Framework (CEF),实现一个简单的网页浏览器。文章详细讲解了配置步骤,包括修改libcef_dll_wrapper项目的设置、创建qtbrowser项目、链接必要的库文件及初始化CEF等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二步:QT窗口内嵌CEF

 

libcef_dll_wrapper 项目设置c/c++ ->代码生成->运行库选择  debug为/MDd  release 为 /MD ,生成。

 

用qtcreater 新建一个项目qtbrowser,为了方便,在vs2013里打开qtbrowser.pro,链接库选择libcef_dll_wrapper.lib,libcef.lib

头文件包含 cef目录的 /include .

然后把cefsimple 下的几个代码文件复制到qtbrowser下,全部添加。

接下来就像这样:

bool QcefCustom::CefInit()
{
    CefEnableHighDPISupport();

    CefSettings settings;
    settings.no_sandbox = true;
    settings.multi_threaded_message_loop = true;
    HINSTANCE inc = GetModuleHandle(NULL);
    CefMainArgs mainArgs(inc);

    CefRefPtr<CefCommandLine> cmd_line = CefCommandLine::CreateCommandLine();
    cmd_line->InitFromString(::GetCommandLineW());
    CefString t = cmd_line->GetCommandLineString();
    CefRefPtr<CefApp> app;
    app = new SimpleApp();
    CefExecuteProcess(mainArgs, app, NULL);
    CefInitialize(mainArgs, settings, app.get(), NULL);

    return true;
}

 

 

void QcefCustom::InitBrowser()
{
    QString strUrl =  "www.baidu.com";
    CefRefPtr<SimpleHandler> handler(new SimpleHandler(false));
    m_browserEvent = SimpleHandler::GetInstance();
    CefWindowInfo cefWndInfo;

    HWND wnd = (HWND)this->winId();
    RECT winRect;
    winRect.left = 0;
    winRect.top = 0;
    winRect.right = DEF_WIGTH;
    winRect.bottom = DEF_HEIHT;

    cefWndInfo.SetAsChild(wnd, winRect);
    CefBrowserSettings cefBrowSetting;
    CefBrowserHost::CreateBrowser(cefWndInfo, handler, strUrl.toStdString(), cefBrowSetting, NULL);
}

先CefInit(),再调用 InitBrowser();

然后用vs2013编译,生成了exe之后,把cefsimple/bin 下的所有依赖文件考过来,注意:用新生成的libcef_dll_wrapper.dll libcef.dll替换之前的,然后运行起来就可以了。

效果如下:

 

滚动条怎么加的?

qt窗口继承 :void QcefCustom::resizeEvent(QResizeEvent* pResizeEvent)

然后外窗口变化,同时也MoveWindow 内部的浏览器窗口,就可以了。

debug下运行白屏不知道为什么,退出崩溃的问题release下没有出现。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值