翻譯|產(chǎn)品更新|編輯:鮑佳佳|2020-12-15 15:06:18.073|閱讀 1800 次
概述:Qt 6.0正式發(fā)布。這是第一個版本,標志著Qt的重要里程碑。Qt 6的任務是使Qt成為未來的開發(fā)平臺。作為Qt的主要版本,Qt 6.0為我們提供了更高的自由度,以實現(xiàn)新功能,以及更好地支持當今和未來的需求。Qt 6.0是Qt 5系列的延續(xù),我們一直致力于使遷移對用戶無干擾。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統(tǒng)以及移動操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M的試用版。
工具推薦:
多年來,Qt 5取得了巨大的成功,并且自發(fā)布Qt 5.0以來的八年中,我們看到了用戶群和Qt使用量的巨大增長。但是,自2012年以來,世界發(fā)生了重大變化。嵌入式系統(tǒng)中Qt的使用猛增,C ++不斷發(fā)展,新的3D圖形API出現(xiàn)了。這些是直接影響Qt的因素示例。
作為跨平臺框架,Qt需要適應那些不斷變化的需求。在Qt 5的生命周期內(nèi),已經(jīng)設法很好地適應了其中的許多要求。但是,在Qt 5系列中保持完整的源代碼和二進制兼容性使得某些事情在其生命周期內(nèi)無法修復。使用Qt 6,我們現(xiàn)在有機會進行更改并構建Qt,使其更適合未來。
因此,Qt 6的任務是使Qt成為未來的開發(fā)平臺。作為Qt的主要版本,Qt 6.0為我們提供了更高的自由度,以實現(xiàn)新功能,以及更好地支持當今和未來的需求。Qt 6.0是Qt 5系列的延續(xù),一直致力于使遷移對用戶無干擾。
Qt 6遵守并維護的Qt核心價值,包括:
Qt 6.0是Qt 6系列的第一個版本,旨在滿足新的市場需求,同時將核心價值作為其核心。
在開發(fā)Qt 6時,開發(fā)人員深入研究了Qt的一些最核心部分,以確定如何改進它們。發(fā)現(xiàn)了兩個核心重點領域,并投入了大量時間進行改進。這些領域包括:
C ++ 17
現(xiàn)在,對于Qt 6,我們需要一個與C ++ 17兼容的編譯器,以便在開發(fā)Qt時使用更現(xiàn)代的C ++語言構造,并允許在API方面進行集成。
核心庫和API
Qt Core已完成許多工作,因為它是實現(xiàn)Qt最核心部分的模塊。我們已經(jīng)遍歷了許多領域并進行了改進。列舉一些最核心的:
Qt的其他與圖形無關的部分也發(fā)生了很大的變化。例如,Qt Concurrent已經(jīng)經(jīng)歷了幾乎完全的重寫,并且現(xiàn)在比以往更加輕松地進行多線程應用程序的開發(fā)。Qt Network已經(jīng)看到許多清理和改進。
新的圖形架構
Qt 5 的圖形架構在很大程度上依賴于 OpenGL 作為底層 3D 圖形 API。雖然這在2012年我們創(chuàng)建Qt 5時是正確的做法,但隨著Metal和Vulkan的引入,過去幾年我們周圍的市場發(fā)生了重大變化。我們現(xiàn)在有一大套不同的圖形API,這些API在不同的平臺上被普遍使用。對于Qt作為一個跨平臺框架來說,這當然意味著我們必須對此進行調(diào)整,并確保我們的用戶可以在所有的平臺上以最高的性能運行Qt。
因此,當Qt 5依靠OpenGL來實現(xiàn)硬件加速的圖形時,Qt 6的情況完全改變了。Qt Quick中的所有3D圖形現(xiàn)在都建立在一個新的3D圖形抽象層之上,稱為RHI(Rendering Hardware Interface)。RHI 使得 Qt 可以使用底層操作系統(tǒng)/平臺的原生 3D 圖形 API。因此,Qt Quick 現(xiàn)在將在 Windows 上使用 Direct3D,在 macOS 上默認使用 Metal。詳情請看關于RHI的系列博文。
Qt中的OpenGL專用類仍然存在,但現(xiàn)在被移出QtGui,放在QtOpenGL模塊中。現(xiàn)在還增加了一個新的模塊,叫做QtShaderTools,以跨平臺的方式處理這些API的不同著色語言。
Qt Quick 3D和Qt 3D
Qt Quick 3D是一個比較新的模塊。它無縫擴展了Qt Quick的3D功能。對于Qt Quick 3D,我們的重點是創(chuàng)建一個API,它與Qt Quick的現(xiàn)有部分(用于2D用戶界面)一樣易于使用,同時為創(chuàng)建復雜的3D場景提供全面支持。這一努力背后的主要目標是實現(xiàn)2D和3D內(nèi)容之間的無縫集成。
這個模塊在Qt 6中得到了顯著的改進,這是我們在Qt 5系列中無法做到的。最重要的是,它現(xiàn)在總是使用RHI抽象層來優(yōu)化使用底層圖形API和硬件。此外,它現(xiàn)在的特點是在2D和3D內(nèi)容之間進行了更深入、更有性能的整合,允許你將2D項目放入3D場景中。它還大大改進了對glTF2和基于物理學的渲染的支持,使得導入在其他設計工具中創(chuàng)建的資產(chǎn)變得輕而易舉。該模塊還有許多其他重大改進,更深入的描述可以在單獨的博客文章中找到。
Qt 3D現(xiàn)在也是基于RHI抽象層之上,已經(jīng)進行了一些性能改進和清理。
Qt Quick的桌面樣式
當我們?yōu)镼t Quick創(chuàng)建這套控件時,我們的重點是讓它們變得輕量級和高性能,因此,它們在Qt 5中不支持桌面風格。然而,在Qt 6中,我們找到了一種方法,讓它們在桌面操作系統(tǒng)上看起來和感覺上都是原生的。在 6.0 中,Qt Quick 現(xiàn)在支持 macOS 和 Windows 上的原生樣式。詳情請看這篇博文。在Qt 5中,Material和Fusion風格已經(jīng)為Android和Linux提供了原生的外觀和感覺,現(xiàn)正在為未來的Qt版本改進這些風格,同時也計劃為iOS實現(xiàn)原生風格。
與平臺特定功能的接口
即使Qt提供了獨立開發(fā)應用程序平臺所需的大多數(shù)功能,有時還是需要與特定于平臺的功能進行交互。在Qt 5中,提供了一組附加模塊(QtX11Extras,QtWinExtras,QtMacExtras)來幫助實現(xiàn)此目的。但是,與Qt其余部分的這種完全隔離導致了Qt內(nèi)部的一些體系結構問題,不一致和代碼重復。在Qt 6中,正努力進行清理,并將那些附加模塊提供的功能折疊到直接在Qt中提供的平臺特定的API中。在Qt 6中,這將使與OS /特定于平臺的API的接口更加容易。
構建系統(tǒng)
我們還對構建和分發(fā)Qt的方式進行了一些重大更改。值得一提的是,Qt 6本身現(xiàn)在是使用CMake構建的。這也為使用CMake構建項目的所有用戶帶來了重大改進。我們將在Qt 6的整個生命周期內(nèi)繼續(xù)支持qmake,因此,如果您正在使用它,則無需對構建系統(tǒng)進行任何更改,但是我們建議對所有新項目都使用CMake。
Qt 6還帶有一個更小的默認軟件包,許多附加組件現(xiàn)在通過軟件包管理器作為單獨的軟件包分發(fā)。這使我們能夠更靈活地調(diào)整加載項的發(fā)布時間表以適應市場需求,例如,允許將更頻繁的功能發(fā)布作為核心Qt軟件包,或使其同時可用于多個Qt版本。此外,我們可以將包裹管理器用作第三方內(nèi)容的傳遞渠道。最后,它為我們的用戶提供了更大的靈活性,因為他們可以選擇僅下載他們真正需要的內(nèi)容。
當前,我們使用現(xiàn)有的Qt安裝程序作為程序包管理器的后端,但是正在研究將來版本的替代方法。
兼容性在對 Qt 6 進行修改時,我們試圖調(diào)整我們的 API,使其符合我們認為未來所需的要求,同時盡量減少對現(xiàn)有用戶的破壞。雖然您的代碼需要進行一些調(diào)整,以盡可能地使用 Qt 6,但我們已經(jīng)盡量使移植到新版本變得簡單。
我們做的第一件事就是清理我們的代碼庫。在Qt 5的生命周期中,我們廢止了不少API甚至整個模塊。我們所做的第一件事就是刪除這些,以便為未來的Qt提供更精簡的服務,并允許我們留下一些今天已經(jīng)沒有意義的東西。
然而,我們已經(jīng)注意將盡可能多的這些API標記為Qt 5.15中的廢棄。啟用廢棄警告并清理這些API將使你的代碼庫與Qt 6兼容。
一些在 Qt 5 中被刪除的最常用的 API 已經(jīng)被移到了 Qt5CoreCompat 模塊中。它包含了一些在Qt 6中被廣泛使用的類,如QRegExp,QTextCodec,舊的XML的SAX解析器,以及其他一些項目。這個模塊的目的是作為一個移植幫助,除了針對Qt 5的回歸和安全相關問題外,不會收到bug修復。我們建議您使用它來進行移植,但隨后逐步刪除您對模塊的依賴。
支持平臺
Qt一直是跨平臺的,并且將在Qt 6中繼續(xù)。Qt 6.0支持
在嵌入式方面,我們支持各種運行Linux的嵌入式設備。Qt 6尚不支持Qt 5支持的任何嵌入式實時操作系統(tǒng)。QNX和INTEGRITY最近都增加了對C ++ 17的支持,有計劃在發(fā)布Qt 6.2時增加對它們的支持。
外觀
Qt 6.0還不支持許多可以在Qt 5.15中找到的附加模塊。這是有意決定的,以騰出時間來確保我們可以完成所有我們需要為Qt框架的基本模塊所做的改動。
我們現(xiàn)在正在努力將這些附加組件中的大部分帶到Qt 6中。我們已經(jīng)做了大量的工作,我們希望在發(fā)布Qt 6.2的時候能夠重新支持大部分附加組件。許多附加組件已經(jīng)針對 Qt 6 進行了編譯,但它們還沒有正式發(fā)布,因為還有一些清理工作和重構工作要做。我們計劃在發(fā)布 Qt 6.2 時將大部分重要的附加組件移植過來。在下面的博文中,您可以了解到我們對Qt 6.0及以后的附加組件支持的完整概述。
除了將缺失的附加組件移植到 Qt 6 中,在接下來的幾個月里,我們與 Qt 6 相關的很多工作將集中在新版本的穩(wěn)定性上,并將新的屬性系統(tǒng)在 Qt 中得到更廣泛的使用。
現(xiàn)已經(jīng)調(diào)整了Qt 6.1和6.2的發(fā)布時間表,并計劃在4月份發(fā)布Qt 6.1。之后,9月底發(fā)布Qt 6系列的第一個長期支持版本Qt 6.2 LTS。
而我們今年的工作還沒有結束,你還可以期待在圣誕節(jié)前發(fā)布全新版本的Qt Creator和Qt Design Studio! 這兩款產(chǎn)品都將全面支持Qt 6。
概要
Qt 6.0是下一代Qt的起點。它的功能尚未達到5.15,但我們將在未來幾個月內(nèi)填補空白。我們在布局下一版Qt的基礎方面做了很多重要的工作。其中許多變化可能不會立即顯現(xiàn)出來,但我堅信,這些變化將有助于保持Qt在未來幾年的競爭力。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: