乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - QT(v5.4)支持HTML5混合开发(Hybrid Development)
2014年12月17日,Qt v5.4正式版发布,支持HTML5混合开发
Qt是一个基于C++、适用于跨平台应用和用户界面(UI)开发的框架,它支持多种桌面、嵌入式和移动操作系统。Qt不但能够开发GUI程序,还能够用于开发非GUI程序。近日,从Qt的官方博客中得知,最新版本的Qt 5.4正式版发布,现已提供下载。该版本实现了HTML5混合开发的支持、新增Windows Phone平台的支持、改进了对Android和iOS平台的支持等众多新特性。从而使得开发者创建原生C++性能的连接设备和精彩应用变得更加简单,并更加利于企业的多屏幕适应和物联网战略。
该版本主要的更新内容如下:
混合开发方面
- 重新设计了与HTML5 Web交互的引擎,推出基于Chromium的Qt WebEngine,从而实现了HTML5和QT混合开发的支持,另外,Qt WebEngine还提供了跨平台的API,集成了QT的图像库。
- 该版本是最后一个支持WebKit的版本,在今后发布的版本中将停止对于WebKit的支持。
- 在商业授权协议和LGPLv3授权协议下推出了Qt WebView,且支持iOS和Android,从实现了利用原生的操作系统浏览器引擎整合网页内容。
- 新增了Qt WebChannel模块,该模块提供了在QML/C++和HTML/Javascript之间的一个简单、易用的桥接,从而使得开发能够使用Qt和Web技术进行混合开发。
移动平台
- 通过Qt提供的Windwos的运行时实现了对跨平台的支持,已经实现了对Windows Phone 8.1,并完全支持桌面和嵌入式平台。
- 改进了对Android 5.0、iOS 8和Xcode 6的支持。
图形方面
- 引入了Qt Quick 2D Renderer插件,使Qt Quick的图形不用OpenGL也能够运行,使得Qt Quick能够在没有GPU的低端设备上运行。
- Qt Quick Compiler 2.0,进一步缩短了设备启动时间。
- Qt Data Visualization升级到了1.2版本、Qt Charts升级到了2.0版本。
其他方面
- 为了满足可穿戴设备和物联网开发的需求,Qt 5.4还提供了蓝牙低能耗支持的技术预览版本。
- Qt Creator升级到了3.3版本,该版本提供了全新的Qt Quick Designer和许多其它提高工作效率的功能。
- Qt Qml通过引入新的QtQml.StateMachine实现了对Qt State Machines的支持。
- 新增了设备创建的支持。
Qt v5.4发布消息公布后,Reddit上也有了相关评论,有人认为现在Qt走了大而全的路线,有人提出了5.4版本是否仍有4.0版本那么易用的疑问。
用户lykwydchykyn评论到:
一直期待着Qt WebEngine,现在终于可以丢弃Qt WebKit了。
Qt公司为Digia于2014年9月份成立的全资子公司,主要负责Qt的产品开发、商业化以及依据商业和开源授权协议进行授权。通过Qt实现的著名软件包括3D建模和动画软件Autodesk Maya、暴雪公司开发的游戏对战平台battle.net、三维虚拟地图软件Google地球、虚拟机软件VirtualBox、EA出品的著名赛车类游戏极品飞车等众多著名软件。
QtWebEngine
https://wiki.qt.io/QtWebEngine
Qt WebEngine将Chromium快速发展的网络功能整合到Qt中。
我们的目标是将网络平台的最新和最好的实现带入Qt的世界。与Qt的整合集中在一个易于使用,但可扩展的API。我们在图形集成方面也毫不妥协,将Chromium的图层渲染直接集成到Qt Quick的OpenGL场景图中。
与Chromium的关系
QtWebEngine使用了Chromium项目的代码。然而,它并不包含Chrome/Chromium的全部内容。
- 二进制文件(Binary files)被剥离出来了
- 与谷歌平台(Google platforms)对话的辅助服务被剥离出来了
- 代码被固定下来,以便在其他编译器上构建,而不是谷歌的特殊修改版clang。
- 代码库被模块化,以允许使用系统库,如libpng、libjpeg和许多其他库。
在Qt发布之前,我们确实更新到了最新的Chromium版本。在发布之后,一些错误的修正和安全补丁会被回传。对于Qt的LTS版本,我们也可能在补丁级别的版本中更新Chromium。
和Chromium版本对应关系
https://wiki.qt.io/QtWebEngine/ChromiumVersions
作为每个Qt WebEngine版本一部分的Chromium版本可以通过以下方式确定。
- 查看各个Qt版本的文档。
- 查看发送到服务器的默认用户代理。
- 查阅修改日志。
- 在git仓库内运行以下shell命令,同时根据需要改变版本标签
git show v5.12.0:tools/scripts/version_resolver.py | pcregrep -o1 "chromium_version *= *'(.*)'"
Qt Version | Chromium Version |
---|---|
6.2.0 | 90.0.4430.228 |
5.15.3–5.15.x | 87.0.4280.144 |
5.15.2 | 83.0.4103.122 |
5.15.0–5.15.1 | 80.0.3987.136 |
5.14.0–5.14.1 | 77.0.3865.98 |
5.13.0–5.13.2 | 73.0.3683.105 |
5.12.0–5.12.7 | 69.0.3497.113 |
5.11.0–5.11.3 | 65.0.3325.151 |
5.10.1 | 61.0.3163.140 |
5.10.0 | 61.0.3163.99 |
5.9.0–5.9.9 | 56.0.2924.122 |
5.8.0 | 53.0.2785.148 |
5.7.0–5.7.1 | 49.0.2623.111 |
5.6.3 | 49.0.2623.111 |
5.6.0–5.6.2 | 45.0.2554.101 |
5.5.0–5.5.1 | 40.0.2214.115 |
5.4.0–5.4.2 | 37.0.2062.103 |
如何尝试QtWebEngine
https://wiki.qt.io/QtWebEngine/How_to_Try
QtWebEngine不能被静态构建。当静态构建开始时,它将跳过这一部分,显示 "不支持QtWebEngine的静态构建。"并继续构建。
1. 获取代码
QtWebEngine的源代码可以在 http://code.qt.io/cgit/qt/qtwebengine.git/ 找到。
2. 构建QtWebengine
- 对于Windows,请看这里
虽然这隐藏在我们的构建系统中,但构建依赖于gyp和ninja(与chromium源一起获取)来构建chromium,因此除了通常的Qt5嫌疑人外,还需要构建对python的依赖。目前你至少需要Qt 5.4来构建QtWebEngine。
注意:如果你有64位的Linux主机,你需要安装一个额外的32位multilib包(至少是:linux-libc-dev:i386, linux-headers-xxx:i386)。
- 在Ubuntu上安装依赖项
sudo apt-get install bison build-essential gperf flex python2 libasound2-dev \ libcups2-dev libdrm-dev libegl1-mesa-dev libnss3-dev libpci-dev libpulse-dev libudev-dev nodejs \ libxtst-dev gyp ninja-build
- 在Ubuntu 20.04+上安装额外的依赖项
为了节省一点时间,从qtwebengine.git编译捆绑的变体
sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev \ libfontconfig1-dev libxss-dev libsrtp0-dev libwebp-dev libjsoncpp-dev libopus-dev libminizip-dev \ libavutil-dev libavformat-dev libavcodec-dev libevent-dev libvpx-dev libsnappy-dev libre2-dev libprotobuf-dev protobuf-compiler
请注意,这些库在其他发行版上也需要安装,尽管软件包名称和预装的库集可能因使用的发行版而不同。
- 在Fedora上安装依赖项
sudo yum install "qt5-*"
sudo yum install mesa-libEGL-devel libgcrypt-devel libgcrypt pciutils-devel nss-devel libXtst-devel gperf cups-devel pulseaudio-libs-devel libgudev1-devel systemd-devel libcap-devel alsa-lib-devel flex bison ruby
要构建一个发布版(一般推荐),请执行
qmake -r CONFIG+=release
- 构建
如果你从git克隆了Qt WebEngine作为一个单独的模块,你可能需要初始化出包含Chromium和Ninja代码的src/3rdparty子模块: cd qtwebengine git submodule update --init
确保你的$PATH
指向一个python 2版本的二进制文件。现在很多系统默认使用python 3。
编译
qmake -r make sudo make install
参考
- Qt 5.4正式版发布,支持HTML5混合开发
- Experimenting with Chromium? and Qt
- QtWebEngine