天天看點

Qt最好用評價最高的是哪個版本?

來源: ​​http://www.qtcn.org/bbs/read-htm-tid-89455.html​​

///

Qt4:    4.8.7      4.X 系列終結版本

Qt5 :   5.6 LTS  長期支援版本

Qt5:    5.9 LTS  長期支援版本

Qt5:    5.12 LTS 長期支援版本

Qt5:    5.15 LTS 長期支援版本

Qt 6 : ???

/

Qt 6 已經在2020年12月8日釋出了。

但你沒有看錯,這篇是談 Qt 5 攻略。

畢竟 Qt 6 在 Win 平台将隻支援 Win10 及其以上。是以大批 Win7、XP 黨 無緣 Qt 6。

而且 Qt6 為了趕進度,早期版本裡缺少了很多子產品,例如 圖表、資料可視化、WebEngine

是以也沒必要急着嘗鮮 Qt 6 ,建議等完整版出來後,再更新也不遲。

那麼 Qt 5 的各個版本,該如何選擇呢?

Qt 5.9 作為LTS也已經在2020年5月31日停止更新了,是以建議使用目前依舊在更新的LTS:5.12 與 5.15。

能直接使用 Qt 5.15 當然是最好的,若實在有難處,就用 5.12 吧,但至少别再用 Qt 5.9 之前的版本了。

如果你需要用到 QtWebkit,則隻能用 Qt5.5及其以前的版本。

如果你需要 PDF 的支援,建議更新至 5.15,因為新增子產品 Qt PDF

如果你需要 SSL 的支援,建議更新至 5.15,因為 5.13 開始已自支援 OpenSSL 1.1 及其以上。

如果你常用 QImage,建議更新至 5.15,因為縮放和轉換的許多方法都更新成多線程的。

如果你常用 QtQuick,建議更新至 5.15,因為 5.14 開始 QtQuick 不再局限于 OpenGL 引擎加速。

如果你常用 QNetworkAccessManager,建議更新至 5.15,因為開始支援逾時設定 setTransferTimeout

如果你發行在 Windows 平台,建議更新至 5.15,因為 5.14 開始對高DPI的裝置有更好的支援。

如果你需要開發 安卓APP,建議更新至 5.15,因為該版本完善了安卓開發文檔。

特别說明

已自支援 OpenSSL 是很實用很實用的。

QNetworkAccessManager 的 setTransferTimeout 逾時設定 是很實用很實用的。

現在很多裝置,特别是筆記本,都是高分屏裝置,對高分屏的良好支援是 5.14 開始的。

對觸摸屏裝置的良好支援,是 Qt 5.12 開始的。

有些高富帥裝置,既是高分屏,又是觸摸屏,例如 surface ,那必須 5.14 至少。

有些對話框的标題欄,會出現“?”按鈕,叫“這是什麼”的提示,很讨厭。 5.10 支援移除。

以下是 Qt 5.9 之後,各個版本比較重要的新特性:

Qt 5.15 LTS 維護至 2023年5月29日

​​https://wiki.qt.io/New_Features_in_Qt_5.15​​

QFile :: moveToTrash,将檔案移動到資源回收筒(以前隻能直接删除檔案)

QThreadPool :: start、tryStart,開始支援lambda

添加了靜态模闆QDebug :: toString函數,該函數将給定的對象傳輸到對字元串進行操作的QDebug執行個體中,然後傳回該字元串。

QImage 的縮放和轉換的許多方法都更新成多線程的。

QNetworkAccessManager 開始支援逾時設定。

QWebEngineHistory 添加 clear

QWebSocket 開始支援設定最大幀大小和消息大小。

Qt Android 完善了開放文檔

新子產品 Qt PDF

Qt 5.14

​​https://wiki.qt.io/New_Features_in_Qt_5.14​​

更新了High-DPI支援。

QTextDocument支援讀寫Markdown格式,以替代HTML。

添加了獨立于圖形API的Scenegraph渲染器的第一個預覽。這允許在Vulkan,Metal或Direct3D 11而不是OpenGL上運作合格的Qt Quick應用程式。

Qt 5.13

​​https://wiki.qt.io/New_Features_in_Qt_5.13​​

Windows 平台開始自帶支援 OpenSSL

新增平台 Qt for WebAssembly

安卓平台 的QFile 開始支援 Urls

Qt 5.12 LTS  維護至 2021年12月6日

​​https://wiki.qt.io/New_Features_in_Qt_5.12​​

基于Windows 8及更高版本上的Windows指針輸入消息,以統一的實作方式替代了平闆電腦/觸摸屏/觸摸闆/滑鼠輸入的處理。

Qt 5.11

​​https://wiki.qt.io/New_Features_in_Qt_5.11​​

QML性能大幅增強

Qt 3D CPU 占用大幅減少

Window 平台更新了易用性支援。

Qt 5.10

​​https://wiki.qt.io/New_Features_in_Qt_5.10​​

添加了QIODevice :: skip()

添加了跨平台Vulkan啟動器:QVulkanInstance

QWidget :: createWindowContainer()現在可在Android上使用

QOpenGLWidget現在可用于呈現和讀取(抓取)螢幕外内容。

添加了AA_DisableWindowContextHelpButton屬性,可防止Windows對話框上的自動“這是什麼”按鈕

新方法QWebEnginePage :: download用于以程式設計方式開始下載下傳。

新增子產品 Qt Speech 用于文本轉語音

Qt 5.9 LTS 已于2020年5月31日終止維護,不建議使用及其以前的版本

​​https://wiki.qt.io/New_Features_in_Qt_5.9​​

如果是嵌入式類應用的還是暫時用4.8系,

如果PC應用,GPU不錯的試試最新版5.X,界面更美觀

我個人從Qt4.7.0開始用起,之間用過4.8系列,Qt5.2,5.3,5.4,5.5,5.6,5.7,5.8。最後選用Qt4.8.7作為最終解決方案,正如官網所說,Qt4.8.7是Qt4系列的終結版本,解決了以往的所有BUG。而且是打包需要帶的動态庫最小的,壓縮下基本上在3MB左右。CPU占用也是最小的,我對比過好多個版本,Qt4.8.7是最好的。下面這個程式就是Qt4.8.7打包的,包含的功能強大,打包壓縮極小。

Qt發展到現在,哪還會有一個版本最好用這樣的說法。

隻有最合适,最比對需求的版本之說。

那麼這個之說到底是什麼說呢,我舉幾個例子。

如果你希望體驗新功能,比如說5.8中的qmlc緩存機制(用于提升程式啟動速度),并且對将來新版本Qt的新功能充滿期待,願意不斷的學習,覺得越新越好。并且願意接受因為新版本更新帶來的新問題(其實往上相容,基本上不會遇到什麼問題)。那麼可以考慮追一下新版本。目前Qt最新版本是Qt5.8.0。我也一路追到了這個版本。從我追版本的感受來看,基本上是瑕不掩瑜的。當然也不乏更新後,整個程式無法使用,然後修改了半天才恢複正常的事情。

或者說,你的裝置是老的嵌入式裝置,性能有限。而且因為種種原因,根本不考慮使用QtQuuick,隻使用QtWidgets。或者說所擁有的環境或者工具鍊也比較老,對Qt5支援很差。那麼這時候,基本就隻能用Qt4了。而如果是在Qt4裡面選,那麼推薦是4.8.6。這是Qt官方上最後一個Qt4版本。别看是Qt4,這個更新是在14年6月。也沒那麼的老。

或者說,你希望在一個穩定的Qt版本基礎上,開發一個産品級應用。不希望版本中的功能經常發生太多的變化,被發現的新問題可以被及時修複。并且希望Qt對這個版本進行長時間的維護,那麼可以選擇Qt5.6的版本,這是一個LTS(長期支援)版本,計劃的維護時間是3年。到現在應該是快滿1年了。還剩餘2年的時間。不過也說不定到時候官方會延長這個支援的時間。

或者說,公司其實已經欽定了一個版本,尤其是做嵌入式,涉及到太多的東西。那麼這時候,隻要主要功能都能用,滿足絕大部分需求,我建議還是不要修改大版本比較好,因為版本遷移,會帶來太多的隐患,有時候不光是Qt自己的,還有工具鍊更新導緻的衍生bug。

或者說,其實你的嵌入式裝置,比如說樹莓派,并沒有豐富的工具鍊或者環境或者公版Qt(已經編譯好,可以直接用)提供使用,那麼這時候,選擇這個裝置下相對受歡迎或者相對使用較多的版本,是一個合适的選擇。

不過啊,如果你隻是開啟一個新的項目,需要一個簡單并且快速的結論,那麼我的建議是使用QtQuick,Qt5.8(越新越好)