QtWebEngine、QWebChannel原理结构分析

QtWebEngine、QWebChannel原理结构分析

QWebChannel分析

QWebChannel流程

QWebChannel将C++接口暴露给HTML,在HTML中调用qwebchannel.js。前提是建立tranport,QT只提供了QWebChannelAbstractTransport,需要自己实现,官方建议用QWebSocket实现,并个给出实例;

1、实现Transport类,内置一个WebSocket套接字;

2、实现新的Channel类,内置一个WebSocketServer;

3、利用新的Channel注册c++对象,从而HTML可以使用该对象;

4、通过以下三种方式进行C++与HTML的交互:

  • 在HTML中连接c++ signal与js函数

  • 在HTML中调用c++ public slots函数;

  • 在HTML中调用c++ Q_INVOKABLE修饰的函数

备注:

参考文章

1、QT:用QWebSocket实现webchannel,实现C++与HTML通信

QtWebEngine分析

QtWebEngine 框架结构

Qt WebEngine Core是基于chromium的核心,widgets、WebEngine和 process主要分别针对桌面、QML等需求。

[图片上传失败...(image-d5b015-1587826338304)]

QtWebEngine 桌面应用结构

[图片上传失败...(image-cf9321-1587826338304)]

调试模式

#include <QApplication>
#include <QWebEngineView>
int main(int argc, char *argv[])
{
     QApplication a(argc, argv);
     QWebEngineView * pdev = new QWebEngineView();
     pdev->show();
    ​
     QWebEngineView * pv = new QWebEngineView();
     pv->setUrl(QUrl("http://www.baidu.com"));
     pv->show();
     pv->page()->setDevToolsPage(pdev->page());
     return a.exec();
}

other

可以直接调用js脚本
需要返回结果,则为异步过程
页面没有加载完毕前,很多脚本无法正确运行。

发布

QWebEngine的在windows下发布,需要依赖 windeployqt.exe,把自己的程序拷贝到一个空文件夹下,而后运行:D:\TEST>windeployqt firstWebEngine.exe

QtWebEngine依赖一个单独的进程文件QtWebEngineProcess.exe,需要在运行一次D:\TEST>windeployqt QtWebEngineProcess.exe

备注

1、参考文章:QWebEngine-基于chromium内核的浏览器框架

待分析观点

  • IPC机制,CEF消息路由

备注

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容