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
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版本對應關系
作為每個Qt WebEngine版本一部分的Chromium版本可以通過以下方式確定。
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
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