• <menu id="w2i4a"></menu>
  • logo Qt使用教程2020

    文檔首頁>>Qt使用教程2020>>C++界面開發(fā)程序Qt使用教程:Qt 6的技術概覽

    C++界面開發(fā)程序Qt使用教程:Qt 6的技術概覽


    Qt是目前最先進、最完整的跨平臺C++開發(fā)工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運用于超過70個行業(yè)、數千家企業(yè),支持數百萬設備及應用。

    點擊下載Qt最新試用版

    自從七年前Qt 5發(fā)布后,我們的世界發(fā)生了很多變化,現在是時候展望和規(guī)劃下一個新的主版本了。這篇博文捕捉了幾個將要在Qt 6中亮相的關鍵點。 Qt 6將是我們Qt 5系列的延續(xù), 因此不會對用戶造成干擾。但是這個新的版本將擁有更高的靈活性來實現新的特性和功能,和目前的Qt 5系列相比,它能更好地支持當下和未來的需求。正如下面即將描述的一樣,Qt 6將致力于實現與Qt 5很大程度上的兼容。Qt 5的新版本還正在開發(fā)中,我們的目標是將Qt 6中將要實現的一些新特性在Qt 5.14和Qt 5.15 LTS中發(fā)布其略微初級的版本。隨著Qt 5.14特性的固定,更多的研發(fā)重點將轉向Qt 6,我們的目標是在2020年年底前發(fā)布Qt 6的第一個版本。在我們深入了解Qt6的新內容之前,讓我們回顧一下Qt對用戶而言的核心價值,首先明確我們不能更改的內容。

    Qt對用戶的價值體現在哪里?

    Qt已經成功應用與許多不同的行業(yè),并且在不斷的橫向發(fā)展,Qt對用戶的核心價值體現如下:

    • 跨平臺特性,用戶可使用一種技術,把一套代碼部署到各種的桌面、移動和嵌入式平臺
    • 可擴展性,覆蓋了從低端的單用途設備到高端復雜的桌面應用程序和互聯(lián)系統(tǒng)
    • 世界一流的API、工具和文檔,簡化了應用程序和設備的開發(fā)流程
    • 可維護性、穩(wěn)定性和兼容性,輕松維護大型代碼庫
    • 擁有超過100萬用戶的大型開發(fā)者生態(tài)

    新版本的Qt需要我們進行一些調整以適應新的市場需求,同時也要把上述5個價值觀作為我們工作的核心內容。 桌面應用是Qt的基礎,也是Qt得以成長和強大的市場,桌面應用是我們大多數用戶第一次接觸Qt的地方,也是組成Qt工具鏈的基礎。保持桌面應用的健康和成長是在其他市場也保持增長的先決條件。 嵌入式和互聯(lián)設備是我們增長最快的領域。觸屏設備的數量正在以指數級增長,但這些設備的硬件價格卻承受著巨大壓力。低端芯片組,單片機,結合中小型觸摸屏的設備將無處不在。這些設備中的大多數都是功能相對簡單的,但它們都需要精致流暢的用戶界面。因此我們需要確保我們的產品能夠瞄準這個空間,從而實現我們的可擴展的承諾。 與此同時,高端設備的用戶界面的復雜性將繼續(xù)增加,它們往往包括了數千個不同的屏幕和許多的應用程序。將2D和3D元素合并到一個用戶界面也是很常見的,增強和虛擬現實的使用也是如此。 人工智能的元素將更廣泛地應用于應用程序和設備中,我們需要有簡單的方法來集成這些元素。 正在創(chuàng)建的互聯(lián)設備數量的強勁增長,以及對用戶體驗的更高要求,使得我們更有必要專注于開發(fā)全球領先的工具,以簡化應用程序和設備的創(chuàng)建流程。將UX設計人員集成到開發(fā)工作流中是我們的目標之一,但是我們還需要在許多其他領域去嘗試進一步簡化用戶的工作。 Qt 6將是Qt的一個新的重大版本,這個版本的主要目標是為2020年以后的需求做好準備,在此次過程中我們將對代碼庫進行整理,使其更容易維護。重點將放在Qt中那些需要調整軟件架構的部分,但是如果不破壞與Qt 5.x兼容性,那這部分就無法完成。 為了適應未來幾年的需求,下面是我們會對Qt進行的的一些關鍵性修改。

    新一代的QML

    QML和Qt Quick是過去幾年推動Qt增長的主要技術。使用這些技術可以直觀的創(chuàng)建用戶界面是我們產品的一個獨特賣點。 QML是為Qt 5創(chuàng)建的,但是它有一些問題和限制。這也意味著它可以大幅改進,我們計劃在Qt 6中實現這些改進。我們計劃如下: 引入強類型。弱類型使得用戶很難對他們的代碼庫進行大的更改。一個強大的類型系統(tǒng)允許IDE和其他工具幫助用戶完成這項任務,并極大地簡化了維護成本。此外,它還有助于我們生成性能更好的代碼和減少相關開銷。 JavaScript成為QML的一個可選特性。使用QML時使用完整的JavaScript引擎會提升復雜性,而且會引起性能上的開銷,尤其是在單片機等低端硬件上,性能開銷更加明顯。然而,這個特性在許多其他應用場景中非常有用。 去掉了QML的版本控制。通過簡化QML中的某些查找規(guī)則并更改上下文屬性的工作方式,我們可以消除QML中的版本控制。反過來,這將大大的簡化QML引擎,極大地簡化我們維護Qt Quick的工作負擔,并為用戶簡化QML和Qt Quick的使用流程。 刪除QObject和QML之間重復的數據結構 目前我們的元對象系統(tǒng)和QML之間有相當多重復的數據結構,這些重復的數據結構會降低啟動性能,增加內存使用量。通過統(tǒng)一這些數據結構,我們能夠減少許多開銷。 避免運行時生成數據結構。這與上面的一點有關,其中許多重復的數據結構目前都是在運行時生成的。其中大多數完全有可能在編譯時生成。 支持把QML編譯成高效原生的C++代碼。通過強大的類型和更簡單的查找規(guī)則,我們可以將QML轉換為高效原生的C++代碼,從而顯著提高運行時性能 支持隱藏實現細節(jié)。為了能夠在QML組件中隱藏數據和功能,對方法和屬性進行“私有化”一直是一個長期的需求。 更好的工具集成。我們當前的QML代碼模型時常不完整,這使得重構和在編譯時檢測錯誤變得困難甚至不可能。通過上述更改,應該能夠提供與C++相媲美的編譯時診斷以及大幅改進的重構支持。

    下一代圖形

    自從Qt 5.0以來,圖形領域發(fā)生了很多變化,這導致我們不得不對圖形棧進行重大更改,以保持其競爭力。 在Qt 5中,我們統(tǒng)一使用OpenGL作為3D圖形的API。從那時起,產生了許多新的API。在Linux上Vulkan是OpenGL的指定接班人,蘋果正在推動Metal的發(fā)展,而微軟有Direct 3D。這意味著Qt將來必須與所有這些API無縫地銜接。為了實現這一點,必須定義一個新的圖形抽象層的API(類似于平臺集成層的QPA),稱為渲染硬件接口(RHI)。我們需要將所有的渲染基礎設施(QPainter、Qt Quick Scenegraph和我們的3D支持)建立在該層的基礎之上。 不同圖形API的合成也導致我們必須支持不同的著色語言。Qt著色器工具模塊將幫助我們在編譯和運行時交叉編譯著色器。 3D正在扮演越來越重要的角色,而我們目前的產品還沒有一個統(tǒng)一的解決方案來創(chuàng)建同時包含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文件轉換為壓縮紋理格式,將許多文件編譯為紋理圖集,將著色器和網格轉換為優(yōu)化的二進制格式等等。 我們還打算為Qt 6引入統(tǒng)一的主題樣式引擎,這將允許我們在桌面和移動平臺上獲得Qt Widgets和Qt Quick的原生外觀。

    統(tǒng)一并且一致的工具庫

    我們創(chuàng)建用戶界面的圖形工具已經被一分為二,包括Qt 3D Studio和Qt Design Studio。此外,Qt 3D Studio與Qt的其余部分有些脫節(jié),導致了相當多的重復工作。 我們通過將Qt 3D Studio所需的功能合并回Design Studio來統(tǒng)一這些功能。Design Studio與Qt Creator共享了大量代碼和應用/插件框架,提供了很好的設計體驗,并為我們提供了在設計師和開發(fā)者之間搭建橋梁的工具。 設計工具還需要與Photoshop、Sketch、Illustrator、Maya、3D Max等內容創(chuàng)建工具進行良好的集成。 開發(fā)者工具需要大量的投入,這樣我們才能提供對C++、QML和Python等提供最佳的支持。提供統(tǒng)一工具還意味著開發(fā)人員可以很容易地使用Qt Creator中的設計功能,而UX設計者可以從開發(fā)者工具的特性(如編譯項目或在設備上測試)中獲益。 QMake作為Qt 5中使用的構建系統(tǒng)有很多缺陷和限制。對于Qt 6,我們的目標是使用CMake作為標準的第三方構建系統(tǒng)來構建Qt。到目前為止,CMake是C++世界中使用最廣泛的構建系統(tǒng),我們迫切需要更好地與它集成。在QMake上我們將繼續(xù)支持用戶,但不會對其進一步開發(fā)或用來構建Qt框架本身。

    增強已有的C++ API

    C++在過去的幾年中發(fā)生了很大的變化。雖然Qt 5.0必須以C++ 98為基礎,但現在Qt 6可以依賴C++ 17。這意味著C++提供了更多的開箱即用的功能,這在我們使用Qt 5時是沒有的。我們使用Qt 6的目標是更好地集成這些能力,同時也保持向前的兼容性。 Qt 6中,我們希望把QML和Qt Quick的一些功能引入到C++中。我們致力于為QObject及其相關類引入一個新的屬性系統(tǒng),將QML中的綁定引擎集成到Qt的核心中,并使其在C++中可用。新的屬性系統(tǒng)和綁定引擎將顯著降低綁定的運行時開銷和內存消耗,并使它們可用于Qt的所有部分,而不僅僅是Qt Quick。

    語言支持

    在Qt 5.12中,我們引入了對Python的支持,并通過Qt為WebAssembly添加了瀏覽器作為新的平臺。在發(fā)布6.0之后,保持并進一步擴展跨平臺特性將是Qt 6系列的一個重要部分。

    兼容Qt 5和增量改進

    與舊版本的兼容性是非常重要的,也是我們開發(fā)Qt 6時的主要需求。用戶已經使用我們的框架編寫了數十億行代碼,因此,我們所做的任何不兼容的更改都會給用戶帶來額外的成本。此外,對Qt 6的更改要求用戶做的工作越多,用戶升級的速度就會越慢,這將導致維護Qt 5的最后一個版本的成本更高。 因此,在用戶代碼中我們應該避免觸發(fā)編譯時或運行時錯誤進而使得Qt運行崩潰。如果我們必須破壞兼容性,編譯時錯誤比運行時的靜默破壞更可取(因為后者更難檢測)。 當我們確實需要刪除Qt的某些廢棄部分,那么我們必須要確保它不會影響用戶需要的部分,大部分用戶都在使用的關鍵功能,比如Qt Widgets和其他部分毫無疑問必須保留。 我們正在計劃對核心類和功能進行許多在Qt 5中無法實施的增量改進。我們的目標是保持完整的源代碼兼容性,但是由于我們可以打破Qt 6的二進制兼容性,我們可以做很多在Qt 5中無法完成的清理和改進。 除了這些,我們還將對Qt 6進行其它的清理。我們將刪除Qt 5中已經廢棄的大部分功能(函數、類或模塊)。從長遠來看,這種清理將有助于節(jié)省開發(fā)人員的時間,并允許我們把更多的精力放在維護和編碼上。 然而,對棄用部分的移植需要盡可能的簡單,我們的用戶可以完美地使用Qt 5.15 LTS增量地完成這一工作。我們的目標應該是Qt 6與Qt 5.15 LTS足夠兼容,這樣就可以輕松地維護一個可以同時針對兩個版本編譯的大型代碼庫。

    市場和技術產品結構

    除了改進Qt框架和工具,我們的目標是為組件和開發(fā)工具創(chuàng)建一個新的市場。這個方向將面向開發(fā)、設計應用程序和嵌入式設備的直接使用者,而不是面向最終用戶。因此,它將成為Qt生態(tài)系統(tǒng)的一個凝聚中心。它將為第三方廠商提供一個發(fā)布Qt擴展組件的場所,擴展可以是免費或商業(yè)的。 Qt在過去的幾年里增長良多,當前最重要的任務就是發(fā)布一個新版本。在Qt 6中,我們有機會重組我們的產品,并將必要的框架和工具打包為一個更小的核心。我們將利用應用市場來交付我們的附加框架和工具,而不是作為與核心Qt產品緊密耦合的捆綁包。這將使我們在何時交付以及如何交付方面具有額外的靈活性,并允許我們?yōu)槟承└郊咏M件解耦發(fā)布計劃。


    想要購買Qt正版授權的朋友可以點擊"咨詢在線客服"哦~~~

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();