Qt 6.7 正式發布!

Qt 6.7 正式發布!的圖1

本文翻譯自:Qt 6.7 Released!

原文作者:Qt Group研發總監Volker Hilsheimer

在最新發布的Qt 6.7版本中,我們大大小小作出了許多改善,以便您在構建現代應用程序和用戶體驗時能夠享受更多樂趣。

部分新增功能已推出了技術預覽版,歡迎與我們分享您的使用反饋,幫助我們為接下來的LTS版本做好準備!

Qt 6.7 正式發布!的圖2

在Qt中使用C++20

對于大部分編譯工具鏈而言,C++20仍是可選的實驗性標準。并且,在構建或使用Qt的過程中,C++20也不是必須的。盡管如此,我們還是希望為用戶提供最新的版本,以便他們能夠根據自己的喜好進行選擇。從C++17過渡到C++20,現有的代碼需要經過調整才可運行,Qt也是如此。因此,我們對Qt 6.7進行了進一步調整,以便Qt能夠更加適配于現代C++堆棧。

在C++20語言中,三向比較運算符operator<=>(),也就是所謂的“宇宙飛船”運算符是一項比較有用的補充。在實現該運算符時,您需要指定相應的序關系。在Qt 6.7中,我們添加了Qt::{strong,weak,partial}_ordering類作為對應std::*_ordering類型的C++17兼容實現。對于類型作者,Qt 6.7提供了可用于實現關系運算符的輔助宏。這些宏在C++20版本中可以擴展為operator<=>(),在C++17版本中則會退回到其所使用的六個運算符。

C++20標準庫的一項有用補充是std::span,我們希望自己在使用的同時,也能夠提供給Qt用戶。作為連續序列對象的非所有者表示,span在構建和通過函數調用傳遞時成本較低,而我們此次推出的QSpan便是這種類型的C++17實現。

我們還將繼續為相關的Qt API提供std::chrono支持。Qt Network API的傳輸超時現在可以指定為std::chrono類型和字面量形式。

支持2D和3D可視化的Qt Graphs

在Qt 6.6中,我們引入了Qt Graphs的首個技術預覽版作為現代Qt 6框架,以便在硬件加速的渲染架構上實現數據的可視化。

在Qt 6.7中,除了自Qt 6.6起就提供的3D可視化之外,我們還添加了對2D條形圖、折線圖和散點圖的支持。該模塊可與Qt Quick中的動畫和特效集成,并可提供主題和基于處理程序的交互式API。

Qt 6.7 正式發布!的圖3

Qt Graphs仍在積極開發中,因此在此版本中將繼續作為技術預覽版提供。我們對數據API和框架進行了部分實質性的改進,以減少內存分配量,并使其與Qt的抽象項模型繼續保持一致。我們希望在Qt 6.8 LTS技術預覽版發布前,進一步改進API和框架,因此歡迎與我們分享您的用例和需求,以便我們能夠以最佳方式滿足。

連接性、協議和分布式架構

通過引入QHttpHeaders、QRestAccessManager和QRestReply作為REST特定用例的新類,分布式系統的開發人員現在可以更高效地使用HTTP和REST API。

Qt gRPC引入了用于客戶端、服務器和雙向流調用的新類,可以在值變化時自動觸發消息的無縫傳遞。新的Interceptor API可為選定的gPRC消息添加回調函數,從而能夠實現緩存或日志記錄等功能。借助Qt 6.7中的Qt Protobuf,開發人員現在可以將Protobuf消息序列化或反序列化為JSON格式,并可使用支持可選字段和保留枚舉值大小寫的生成器。

這些新功能將幫助開發人員更輕松地使用Qt來構建穩健且可擴展的應用程序。在Qt gQPC和Qt Protobuf實現對HTTP/2的支持后,它們將在Qt 6.8版本中脫離技術預覽階段。

矢量圖形

Qt SVG自推出以來就一直支持SVG 1.2 Tiny配置文件的靜態特性。如今該配置文件已越來越不重要,并且長時間以來,創作工具已不再遵循任何特定的配置文件。在Qt 6.7中,我們分析了SVG1.1和2.0中常用于SVG資源的靜態元素,并添加了對這些常用功能的支持,包括<symbol>、<marker>、<pattern>、<mask>及各種<filter>元素。借助6.7中的Qt SVG,應用程序現在可以渲染大多數與UI構建器相關的SVG文件。

Qt 6.7 正式發布!的圖4

如果需要完全支持SVG 2.0,Qt WebEngine模塊仍然是最佳選擇。

除了將SVG作為預渲染像素圖導入Qt UI,我們還在努力實現將矢量圖形資源直接導入Qt Quick的場景圖。新的(實驗性的)svgtoqml工具可將SVG轉換為QML,并且經過改進的Qt Quick Shapes模塊可以實現更高質量的渲染。在Qt 6.6中以技術預覽版本引入的曲線渲染器現已得到完全支持,并可通過PreferredRendererType屬性進行啟用。

字體和圖標的改進

在Qt 6.6中引入對印刷字體功能的支持后,我們在Qt 6.7中又引入了對變量字體的支持。變量字體通過將單個字體的變體整合到單個字體文件,從而應用程序可以從中選擇不同的“粗細”或“斜體”值。由于字體設計者所創建的可變軸不同,字形可以呈現動畫形式或體現不同的層。如果需要了解更多有關變量字體支持及其他文本改進的信息,請參閱Eskil的博客文章。

該API現在很穩定,并且始終使用新的QFont::Tag類以類型安全的方式指定字體功能和軸名稱。

由于對現代字體的支持得到了改進,我們添加了對本機圖標庫的支持,這些庫通常通過字體提供。例如,on::fromTheme的實現可以將XDG圖標名稱映射到Apple、Windows和Android平臺中本機圖標庫的相應符號上。未來,我們還計劃利用字體API的新功能為更多的圖標功能提供支持,例如圖標的輪廓及填充版本等。

Qt 6.7 正式發布!的圖5

混合應用本機UI元素和渲染

在桌面和移動端上,應用程序通常需要組合來自不同技術和框架的UI元素。由于Qt與所有平臺的原生技術都是緊密集成的,因此可以創建窗口等基本的UI元素,并且在Qt Widgets應用程序中使用其他框架的UI元素則早就已經實現。

在Qt 6.7中,我們還添加了對在Qt Qucik場景中嵌入本機窗口的支持。從而使AppKit的MapView和Windows媒體播放器等本機控件能夠在Qt Quick UI中得到正確定位和堆疊。并且,Qt Quidk UI元素還可通過分層窗口疊加在本機組件之上。

Qt 6.7 正式發布!的圖6

此外,應用程序現在還可以通過QRhiQuickItem和QRhiWidget類,借助Qt支持的任意圖形API將渲染代碼分別添加到Qt Quick和Qt Widgets應用程序中。盡管此類代碼通常不能完全跨平臺使用(因為Vulkan、OpenGL、Direct3D和Metal在所有目標平臺上并沒有受到同等支持),但您可以集成使用了這些技術的第三方框架,或為特定平臺編寫高度優化的渲染代碼來解決這個問題。

平臺支持更新

與其他次要版本一樣,我們更新了支持的平臺列表,并添加了相關操作系統的最新穩定版本。在桌面和移動設備方面,Qt 6.7完全支持macOS 14和iOS 17、Windows 11 23H2以及Android 14。最新支持的Linux發行版包括RedHat 9.2、Open Suse 5.15和SUSE Linux Enterprise Server 15(Ubuntu仍為22.04)。安裝程序中提供了使用基于LLVM的MinGW工具鏈的Windows預構建二進制文件,并且Windows和Linux on ARM均作為技術預覽版提供。

在嵌入式方面,Boot2Qt參考映像支持Yocto 4.3 Nanbield。作為實時操作系統,Qt 6.7現在還提供VxWorks 7的純源技術預覽(使用iMX6硬件SR 24.03版本)。此外,在線安裝程序還可提供QNX 7.1的預構建二進制文件。

經過改進的新示例和演示

除了對框架的改進,我們還整理了Qt附帶的示例和演示應用程序,并更新了UI和編碼風格。我們還創建了部分新的應用程序,向您展示經過設計人員和開發人員的通力合作,可以將Qt的UI、可視化和后端功能進行結合。

Lightning Viewer示例使用Qt Location和Qt Quick Controls來可視化通過Qt WebSocket接收的模擬閃電數據。其中所有的控件樣式都是使用Figma創建的。

Qt 6.7 正式發布!的圖7

完全重新創建的StocQt示例使用Qt Graphs來可視化基于NASDAQ-100的股票數據。該示例的UI是使用Qt Design Studio創建的;在設置對話框中提供API密鑰后,即可通過Financial Modeling Prep服務接收實時信息數據。

Qt 6.7 正式發布!的圖8

新的OSM Buildings示例結合Qt Quick 3D、Qt Positioning以及Qt Network,實現了通過OpenStreetMap服務接收數據的建筑物地圖數據3D查看器。

Qt 6.7 正式發布!的圖9

虛擬助手在用戶界面中越來越流行,新的Virtual Assistant示例展示了如何通過時間線動畫輕松賦予3D模型生命。

Qt 6.7 正式發布!的圖10

最后,新的Volumetric rendering示例使用Qt Quick 3D新支持的3D紋理實現了體積射線投射。

Qt 6.7 正式發布!的圖11

Qt for Python

隨著Qt中的新功能不斷增加,我們的Python產品也需要做出相應改善以方便Python用戶的使用。除了本文所涉及的內容,PySide和Shiboken也有許多改進之處,這些內容將在后續貼子中詳細介紹。敬請關注!

小事情大不同

以上就是此次較為重要的新功能,但與所有次要版本一樣,Qt 6.7還對現有的類和工具進行了許多小改進。由于本文篇幅有限,您可以參閱Qt 6.7新增功能文檔查閱完整的新增內容。

致謝

感謝所有參與Qt 6.7版本實現的貢獻者。您可以在發布說明的末尾看到為Qt源代碼提供補丁的完整社區成員名單。同時,也特別感謝所有通過報告錯誤、發送反饋或和分享用例來幫助改進Qt的人。最后,感謝所有參與此次發布的人!

和往常一樣,您可以通過Qt安裝程序來獲取新版本,也可以通過下載頁面、Qt賬戶頁面以及上文提及的Debian存儲庫獲取該版本。

部分新增功能已推出了技術預覽版,歡迎與我們分享您的使用反饋,幫助我們為接下來的LTS版本做好準備!



深圳市優飛迪科技有限公司成立于2010年,是一家專注于產品開發平臺解決方案與物聯網技術開發的國家級高新技術企業、專精特新中小企業。

十多年來,優飛迪科技在數字孿生、工業軟件尤其仿真技術、物聯網技術開發等領域積累了豐富的經驗,并在這些領域擁有數十項獨立自主的知識產權。同時,優飛迪科技也與國際和國內的主要頭部工業軟件廠商建立了戰略合作關系,能夠為客戶提供完整的產品開發平臺解決方案。

優飛迪科技技術團隊實力雄厚,主要成員均來自于國內外頂尖學府、并在相關領域有豐富的工作經驗,能為客戶提供“全心U+端到端服務”。

Qt 6.7 正式發布!的圖12

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP