歡迎您光臨本站 註冊首頁

兩個月前,Qt 5.13 穩定版正式發布,按照官方提供的發布計劃,Qt 5.14 將在今年年底發布,明年中旬推出 Qt 5.15(或許是 Qt 5 的最後一個版本),接著就是可能會在 2020 年底問世的 Qt 6。

這就意味著從 Qt 5 到 Qt 6,期間經歷了長達八年的時間,如此大的跨度,對於一個開源框架意味著什麼?Qt 6 又會迎來怎樣的變化?近日 Qt 團隊在博客發表文章介紹了他們在技術方面對 Qt 6 寄予的願景。下面就來看看官方是如何看待 Qt 6 的。

按照官方的說法,Qt 6 會保持對 Qt 5 的延續性 —— 繼續他們在 Qt 5 系列中所做的工作,並儘可能不對 Qt 5 用戶在使用方面造成破壞性影響。但 Qt 6 畢竟是作為一個新的主要版本面世,它也有自己的使命,它將為我們提供更高的自由度來實現新功能,以更好地支持當前和未來的要求,而這不是當前 Qt 5 系列能滿足的。

Qt 6 還會對代碼庫進行清理並使其更易於維護。因此,重點將放在那些需要在 Qt 內進行架構變更的項目中,這帶來的影響就是,如果不破壞與 Qt 5.x 某種程度的兼容性就無法完成這些變更。

結合對 Qt 5 的延續性,所以 Qt 6 的目標之一就是在滿足新要求的前提下,盡最大程度保證與 Qt 5 系列的兼容性。由於 Qt 5 的新版本仍在研發中,官方表示會將 Qt 6 的一些特性放到 Qt 5.14 和 Qt 5.15 LTS 中實現。隨著 Qt 5.14 的特性凍結,研發工作的重心將轉向 Qt 6,並希望在 2020 年底發布首個版本。

眾所周知,Qt 最大的亮點之一就是其跨平台特性 —— 開發者通過使用一種技術和單一代碼庫即可將應用程序部署到所有桌面、移動和嵌入式平台。而桌面平台是 Qt 立足的根本,對 Qt 而言這是最核心和最重要的市場。因此保持 Qt 在桌面市場的健康和增長是在其他市場也能夠增長的先決條件。

下面將介紹在 Qt 中進行的一些關鍵技術變更,以使其能適應未來幾年的技術發展。

下一代 QML

QML 和 Qt Quick 是過去幾年推動 Qt 框架持續增長的主要技術。通過使用這些技術以直觀的方式創建用戶界面也是其產品的獨特賣點。

不過 QML 畢竟是為 Qt 5 而創建的,存在一些怪異的操作及其局限性。因此開發團隊計劃借 Qt 6 以實現對 QML 的重大改進。目前計劃的主要變化是:

  • 引入強大的類型系統

  • 使 JavaScript 成為 QML 的可選功能

  • 移除 QML 的版本控制功能

  • 移除 QObject 和 QML 之間的重複數據結構

  • 避免在 runtime 階段生成數據結構

  • 支持將 QML 編譯為高效的 C++ 和原生代碼

  • 支持隱藏實現細節

  • 更好的工具集成

下一代圖形堆棧

自 Qt 5 發布以來,圖形領域已經發生了許多變化,所以 Qt 框架不得不對圖形堆棧進行重大改進以保持競爭力。

Qt 5 使用 OpenGL 作為 3D 圖形的統一 API。不過也是從那時起,業界誕生了許多新的 API。Vulkan 是 Linux 平台上 OpenGL 的指定繼承者,Apple 正在推動 Metal 的發展,而微軟則推出了 Direct 3D。這就意味著 Qt 將來必須與所有這些 API 無縫協作。為了實現這一點,Qt 必須定義一個新的層對圖形 API 進行抽象(如用於平台集成的 QPA),官方將這個層稱為渲染硬體介面(Rendering Hardware Interface,RHI),他們需要將所有渲染基礎設施(QPainter,Qt Quick Scenegraph 以及對 3D 的支持)建立在該層之上。

此外,團隊還打算為 Qt 6 帶來統一的主題/樣式引擎,這將使我們能夠在桌面和移動平台上獲得 Qt Widgets 和 Qt Quick 的原生外觀。

對 C++ API 的增強

C++ 在過去幾年裡發生了巨大的變化。Qt 5 使用的還是 C++98 標準,到現在 Qt 6 已經開始使用 C++ 17。C++ 17 提供了更多的開箱即用功能,而這在 Qt 5 中是無法使用的,所以 Qt 6 的目標是更好地集成 C++ 17 的新功能,並保持對 Qt 5 的兼容性。

除此之外,團隊還計劃通過 C++ 為 QML 和 Qt Quick 引入一些新功能,致力於為 QObject 和相關類引入一個新的屬性系統,將 QML 中的綁定引擎集成到 Qt 的內核,並可通過 C++ 進行使用。

新的屬性系統和綁定引擎將大大減少綁定的 runtime 開銷和內存消耗,並使 Qt 的所有其他部分都可以訪問它們,而不僅僅是 Qt Quick。

對新語言的支持

Qt 5.12 引入了對 Python 的支持,此外團隊還嘗試通過引入 Qt for WebAssembly 技術將瀏覽器添加為新平台。在 6.0 發布之後,保持並進一步擴展其跨平台特性將是 Qt 6 系列的重要組成部分。

與 Qt 5 的兼容性和增量改進

保持與舊版本的兼容性非常重要,官方表示這也是他們開發 Qt 6 的主要要求之一。團隊在博客中說到,他們確實會刪除 Qt 的某些棄用功能,但也會確保用戶所需的功能不受影響。這意味著關鍵功能,例如 Qt Widgets 和大部分用戶使用的其他功能都將保持其可用性。

團隊還計劃對 Qt 5 系列中無法完成的核心類和功能進行漸進式改進,目的是保持完全的源代碼兼容性,但由於對二進位兼容性沒有要求,因此團隊會繼續實現在 Qt 5 中無法完成的代碼清理和改進。

最終的目標應該是 Qt 6 與 Qt 5.15 LTS 有足夠的兼容性,如此一來開發者就可以輕鬆維護一個同時針對這兩個版本編譯的大型代碼庫。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/109075/technical-vision-qt-6
Qt 6 將於 2020 年底發布,時隔八年的大版本更新有哪些看點?已經有194次圍觀

http://coctec.com/news/all/show-post-211984.html