乘風破浪,遇見最美Windows 11之現代Windows桌面應用開發 - QT(v5.4)支持HTML5混合開發(Hybrid Development)


2014年12月17日,Qt v5.4正式版發布,支持HTML5混合開發

image

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版本可以通過以下方式確定。

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

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM