Qt 6.0正式版2020-12-08發布
鏈接下載online 安裝工具進行在線安裝:
https://download.qt.io/official_releases/online_installers/
Qt也提供了原始碼包:
https://download.qt.io/development_releases/qt/6.0/
圖展示
QT6.0整體界面風格繼承QT以往一慣風格,QtCreator用的4.12.4的版本,整體風格變化不大,下面是安裝后打開QT Creator截圖,


Qt的價值體現
- 跨平臺特性,用戶可使用一種技術,把一套代碼部署到各種的桌面、移動和嵌入式平臺
- 可擴展性,覆寫了從低端的單用途設備到高端復雜的桌面應用程式和互聯系統
- 世界一流的API、工具和檔案,簡化了應用程式和設備的開發流程
- 可維護性、穩定性和兼容性,輕松維護大型代碼庫
- 擁有超過100萬用戶的大型開發者生態
Qt 6 的發展方向
新版本的Qt需要我們進行一些調整以適應新的市場需求,同時也要把上述5個價值觀作為我們作業的核心內容, 桌面應用是Qt的基礎,也是Qt得以成長和強大的市場,桌面應用是我們大多數用戶第一次接觸Qt的地方,也是組成Qt工具鏈的基礎,保持桌面應用的健康和成長是在其他市場也保持增長的先決條件, 嵌入式和互聯設備是我們增長最快的領域,觸屏設備的數量正在以指數級增長,但這些設備的硬體價格卻承受著巨大壓力,低端芯片組,單片機,結合中小型觸摸屏的設備將無處不在,這些設備中的大多數都是功能相對簡單的,但它們都需要精致流暢的用戶界面,因此我們需要確保我們的產品能夠瞄準這個空間,從而實作我們的可擴展的承諾, 與此同時,高端設備的用戶界面的復雜性將繼續增加,它們往往包括了數千個不同的螢屏和許多的應用程式,將2D和3D元素合并到一個用戶界面也是很常見的,增強和虛擬現實的使用也是如此, 人工智能的元素將更廣泛地應用于應用程式和設備中,我們需要有簡單的方法來集成這些元素, 正在創建的互聯設備數量的強勁增長,以及對用戶體驗的更高要求,使得我們更有必要專注于開發全球領先的工具,以簡化應用程式和設備的創建流程,將UX設計人員集成到開發作業流中是我們的目標之一,但是我們還需要在許多其他領域去嘗試進一步簡化用戶的作業, Qt 6將是Qt的一個新的重大版本,這個版本的主要目標是為2020年以后的需求做好準備,在此次程序中我們將對代碼庫進行整理,使其更容易維護,重點將放在Qt中那些需要調整軟體架構的部分,但是如果不破壞與Qt 5.x兼容性,那這部分就無法完成, 為了適應未來幾年的需求,下面是我們會對Qt進行的的一些關鍵性修改,
新一代的QML
QML和Qt Quick是過去幾年推動Qt增長的主要技術,使用這些技術可以直觀的創建用戶界面是我們產品的一個獨特賣點, QML是為Qt 5創建的,但是它有一些問題和限制,這也意味著它可以大幅改進,我們計劃在Qt 6中實作這些改進,我們計劃如下: 引入強型別,弱型別使得用戶很難對他們的代碼庫進行大的更改,一個強大的型別系統允許IDE和其他工具幫助用戶完成這項任務,并極大地簡化了維護成本,此外,它還有助于我們生成性能更好的代碼和減少相關開銷, JavaScript成為QML的一個可選特性,使用QML時使用完整的JavaScript引擎會提升復雜性,而且會引起性能上的開銷,尤其是在單片機等低端硬體上,性能開銷更加明顯,然而,這個特性在許多其他應用場景中非常有用, 去掉了QML的版本控制,通過簡化QML中的某些查找規則并更改背景關系屬性的作業方式,我們可以消除QML中的版本控制,反過來,這將大大的簡化QML引擎,極大地簡化我們維護Qt Quick的作業負擔,并為用戶簡化QML和Qt Quick的使用流程, 洗掉QObject和QML之間重復的資料結構 ,目前我們的元物件系統和QML之間有相當多重復的資料結構,這些重復的資料結構會降低啟動性能,增加記憶體使用量,通過統一這些資料結構,我們能夠減少許多開銷, 避免運行時生成資料結構,這與上面的一點有關,其中許多重復的資料結構目前都是在運行時生成的,其中大多數完全有可能在編譯時生成, 支持把QML編譯成高效原生的C++代碼,通過強大的型別和更簡單的查找規則,我們可以將QML轉換為高效原生的C++代碼,從而顯著提高運行時性能, 支持隱藏實作細節,為了能夠在QML組件中隱藏資料和功能,對方法和屬性進行“私有化”一直是一個長期的需求, 更好的工具集成,我們當前的QML代碼模型時常不完整,這使得重構和在編譯時檢測錯誤變得困難甚至不可能,通過上述更改,應該能夠提供與C++相媲美的編譯時診斷以及大幅改進的重構支持,
下一代圖形
自從Qt 5.0以來,圖形領域發生了很多變化,這導致我們不得不對圖形堆疊進行重大更改,以保持其競爭力, 在Qt 5中,我們統一使用OpenGL作為3D圖形的API,從那時起,產生了許多新的API,在Linux上Vulkan是OpenGL的指定接班人,蘋果正在推動Metal的發展,而微軟有Direct 3D,這意味著Qt將來必須與所有這些API無縫地銜接,為了實作這一點,必須定義一個新的圖形抽象層的API(類似于平臺集成層的QPA),稱為渲染硬體介面(RHI),我們需要將所有的渲染基礎設施(QPainter、Qt Quick Scenegraph和我們的3D支持)建立在該層的基礎之上, 不同圖形API的合成也導致我們必須支持不同的著色語言,Qt著色器工具模塊將幫助我們在編譯和運行時交叉編譯著色器, 3D正在扮演越來越重要的角色,而我們目前的產品還沒有一個統一的解決方案來創建同時包含2D和3D元素的UI,目前,將QML與Qt 3D或3D Studio中的內容集成是很麻煩的,并且會導致一些性能開銷,此外,在2D和3D內容之間進行逐幀的影片同步和轉換還沒有辦法做到, 3D內容與Qt Quick新的集成方式就是為了解決這個問題,在這種情況下,一個全新的渲染器將允許同時渲染2D和3D內容,并支持兩者之間的任意嵌套,這將把QML轉換為3D UI的UI定義語言,并且不再需要UIP格式,我們將提供一個新的技術預覽版本的Qt Quick與3D支持的版本,它已經包含在了Qt 5.14中,更多的資訊將會在一個單獨的博文中進行說明, 最后,新的圖形堆疊需要強大的圖形素材處理的支持,它能在編譯時根據目標硬體預處理這些素材并在需要時使用,比如將PNG檔案轉換為壓縮紋理格式,將許多檔案編譯為紋理圖集,將著色器和網格轉換為優化的二進制格式等等, 我們還打算為Qt 6引入統一的主題樣式引擎,這將允許我們在桌面和移動平臺上獲得Qt Widgets和Qt Quick的原生外觀,
統一并且一致的工具庫
我們創建用戶界面的圖形工具已經被一分為二,包括Qt 3D Studio和Qt Design Studio,此外,Qt 3D Studio與Qt的其余部分有些脫節,導致了相當多的重復作業, 我們通過將Qt 3D Studio所需的功能合并回Design Studio來統一這些功能,Design Studio與Qt Creator共享了大量代碼和應用/插件框架,提供了很好的設計體驗,并為我們提供了在設計師和開發者之間搭建橋梁的工具, 設計工具還需要與Photoshop、Sketch、Illustrator、Maya、3D Max等內容創建工具進行良好的集成, 開發者工具需要大量的投入,這樣我們才能提供對C++、QML和Python等提供最佳的支持,提供統一工具還意味著開發人員可以很容易地使用Qt Creator中的設計功能,而UX設計者可以從開發者工具的特性(如編譯專案或在設備上測驗)中獲益, QMake作為Qt 5中使用的構建系統有很多缺陷和限制,對于Qt 6,我們的目標是使用CMake作為標準的第三方構建系統來構建Qt,到目前為止,CMake是C++世界中使用最廣泛的構建系統,我們迫切需要更好地與它集成,在QMake上我們將繼續支持用戶,但不會對其進一步開發或用來構建Qt框架本身,
增強已有的C++ API
C++在過去的幾年中發生了很大的變化,雖然Qt 5.0必須以C++ 98為基礎,但現在Qt 6可以依賴C++ 17,這意味著C++提供了更多的開箱即用的功能,這在我們使用Qt 5時是沒有的,我們使用Qt 6的目標是更好地集成這些能力,同時也保持向前的兼容性, Qt 6中,我們希望把QML和Qt Quick的一些功能引入到C++中,我們致力于為QObject及其相關類引入一個新的屬性系統,將QML中的系結引擎集成到Qt的核心中,并使其在C++中可用,新的屬性系統和系結引擎將顯著降低系結的運行時開銷和記憶體消耗,并使它們可用于Qt的所有部分,而不僅僅是Qt Quick,
語言支持
在Qt 5.12中,我們引入了對Python的支持,并通過Qt為WebAssembly添加了瀏覽器作為新的平臺,在發布6.0之后,保持并進一步擴展跨平臺特性將是Qt 6系列的一個重要部分,
兼容Qt 5和增量改進
與舊版本的兼容性是非常重要的,也是我們開發Qt 6時的主要需求,用戶已經使用我們的框架撰寫了數十億行代碼,因此,我們所做的任何不兼容的更改都會給用戶帶來額外的成本,此外,對Qt 6的更改要求用戶做的作業越多,用戶升級的速度就會越慢,這將導致維護Qt 5的最后一個版本的成本更高, 因此,在用戶代碼中我們應該避免觸發編譯時或運行時錯誤進而使得Qt運行崩潰,如果我們必須破壞兼容性,編譯時錯誤比運行時的靜默破壞更可取(因為后者更難檢測), 當我們確實需要洗掉Qt的某些廢棄部分,那么我們必須要確保它不會影響用戶需要的部分,大部分用戶都在使用的關鍵功能,比如Qt Widgets和其他部分毫無疑問必須保留, 我們正在計劃對核心類和功能進行許多在Qt 5中無法實施的增量改進,我們的目標是保持完整的源代碼兼容性,但是由于我們可以打破Qt 6的二進制兼容性,我們可以做很多在Qt 5中無法完成的清理和改進, 除了這些,我們還將對Qt 6進行其它的清理,我們將洗掉Qt 5中已經廢棄的大部分功能(函式、類或模塊),從長遠來看,這種清理將有助于節省開發人員的時間,并允許我們把更多的精力放在維護和編碼上, 然而,對棄用部分的移植需要盡可能的簡單,我們的用戶可以完美地使用Qt 5.15 LTS增量地完成這一作業,我們的目標應該是Qt 6與Qt 5.15 LTS足夠兼容,這樣就可以輕松地維護一個可以同時針對兩個版本編譯的大型代碼庫,
市場和技術產品結構
除了改進Qt框架和工具,我們的目標是為組件和開發工具創建一個新的市場,這個方向將面向開發、設計應用程式和嵌入式設備的直接使用者,而不是面向最終用戶,因此,它將成為Qt生態系統的一個凝聚中心,它將為第三方廠商提供一個發布Qt擴展組件的場所,擴展可以是免費或商業的, Qt在過去的幾年里增長良多,當前最重要的任務就是發布一個新版本,在Qt 6中,我們有機會重組我們的產品,并將必要的框架和工具打包為一個更小的核心,我們將利用應用市場來交付我們的附加框架和工具,而不是作為與核心Qt產品緊密耦合的捆綁包,這將使我們在何時交付以及如何交付方面具有額外的靈活性,并允許我們為某些附加組件解耦發布計劃,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/233135.html
標籤:其他
