侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

一个libcef与Qt集成的障碍以及解决方法

2023-12-11 星期一 / 0 评论 / 0 点赞 / 41 阅读 / 918 字

说简单点好了,现在很多桌面程序使用一个C++编写的本地程序内嵌libcef的方式实现GUI,一般来说这种情况下是不需要使用Qt的,但是特殊情况下,比如既有代码有Qt实现的时候,就需要把libcef和Q

说简单点好了,现在很多桌面程序使用一个C++编写的本地程序内嵌libcef的方式实现GUI,一般来说这种情况下是不需要使用Qt的,但是特殊情况下,比如既有代码有Qt实现的时候,就需要把libcef和Qt集成在一起。

大部分情况下这个很简单,直接将QWidget的handle设置为CefBrowser的父窗口,再将libcef的message loop设置到另一个线程中即可。但是有一种情况,即web内有一个由Qt实现的npapi插件,而libcef使用单进程模型时,就会产生问题——QWidget只能和qApp处于同一个线程内,而web内的插件此时是在另一个线程中创建的。

解决方法是不要将libcef的message loop放到子线程里,而是在Qt的消息循环中设置一个定时器,每次定时器的回调中处理一个libcef的消息。

实测有效。

广告 广告

评论区