《Qt与Web混合开发》系列文章,主要讨论Qt与Web混合开发相关技术。
这类技术存在适用场景,例如:Qt项目使用Web大量现成的组件/方案做功能扩展,
Qt项目中性能无关/频繁更新迭代的页面用html单独实现,Qt项目提供Web形式的SDK给
用户做二次开发等等,或者是Web开发人员齐全而Qt/C++人手不足,此类非技术问题,
都可以使用Qt+Web混合开发。
(不适用的请忽略本文)
简介第二篇文章,先介绍Qt与Web嵌套使用,再介绍Qt与Web分开使用,之后着重讨论分开使用的一些实现细节,特别是WebChannel通信、WebChannel在Web/typescript中的使用。
Qt与Web嵌套MiniBrowser这里以Qt官方的例子MiniBrowser来说明吧。
打开方式如下:
运行效果如下:
这个例子是在Qml中嵌套了WebView。
半透明测试涛哥做了一个简单的半透明测试。
增加了两个半透明的小方块,蓝色的在WebView上面,红色的在WebView下面。
运行效果也是正确的:
代码是这样的:
红色框中是我增加的代码。
为什么要做半透明测试呢?根据以往的经验,不同渲染方式的两种窗口/组件嵌套在一起,总会出现透明失效之类的问题,例如qml与Widget嵌套。
渲染原理涛哥翻了一下Qt源码,了解到渲染的实现方式,Windows平台大致如下:
chromium在单独的进程处理html渲染,并将渲染结果存储在共享内存中;主窗口在需要重绘的时候,从共享内存中获取内容并渲染。
小结这里的WebView内部封装好了WebEngine,其本身也是一个Item,就和普通的Qml一样,属性绑定、jsfunction都可以正常使用,暂时不深入讨论了。
Qt与Web分离Qt与Web分离,就是字面意思,Web在单独的浏览器或者App中运行,不和Qt堆在一起。两者通过socket进行通信。
这里用我自己做的例子来说明吧。
(...
转载请注明:http://www.guyukameng.com/aspnet/aspnet/2021-03-09/12630.html