主頁 > 移動端開發 > Qt6.2發布(含專案代碼升級到Qt6吐血經驗總結)

Qt6.2發布(含專案代碼升級到Qt6吐血經驗總結)

2021-10-10 08:38:30 移動端開發

一、前言

升級到Qt6吐血經驗總結 https://gitee.com/feiyangqingyun/qtkaifajingyan#二升級到qt6

我很高興地宣布 Qt 6.2 的發布,Qt 6.2 是我們一直在努力的版本,因為我們開始邁向 Qt 的新主要版本,它受益于我們為 Qt 6 所做的所有架構升級,并且基本上包括您在 Qt 5.15 中喜歡的所有附加模塊,

Qt 6.2 也是 Qt 6 的第一個版本,Qt 公司將為 Qt 商業客戶提供長期支持,

我們在遷移到 Qt 6 時的計劃是首先關注 Qt 的核心,然后進行我們認為在未來幾年保持 Qt 競爭力所需的架構更改,但這種關注也意味著我們不得不在發布 Qt 6.0時對我們支持的附加組件做出妥協 ,因此,盡管 Qt 6.0 比 Qt 5.15 更好、更先進,但它確實缺少 Qt 5.15 提供的一些功能,在 Qt 6.2 中,我們縮小了這一差距,并包含了 Qt 5.15 中的所有常用功能以及為 Qt 6 添加的新功能,

隨著 Qt 6.2 的發布,幾乎我們所有的用戶都應該能夠將他們的代碼從 Qt 5 遷移到 Qt 6,我們已經使用自己的工具實作了這一點,也就是說,Qt Design Studio 2.2 和即將發布的 Qt Creator 6 beta 都是基于 Qt 6.2 LTS,

除了添加缺失的功能外,Qt 6.2 還專注于提高穩定性、性能和開發人員的生活質量,

在詳細了解 6.2 中的新功能之前,讓我們回顧一下 Qt 6 中的一些主要變化,

二、Qt 6 的架構變化

我們在 Qt 6 中進行了一些更廣泛的架構更改,我們現在正在構建 Qt 6.2 和任何未來版本,

  • 利用 C++17 在處理 Qt 6 時,我們希望建立在現代 C++ 標準之上,C++17 是最新發布的版本,而 Qt 6 現在依賴于 C++17 兼容編譯器,這使得我們可以清理和改進我們的代碼庫,并為我們的用戶提供更現代的 API,
  • 在處理大型資料集和性能方面改進了我們的低級容器類,
  • 下一代 QML 我們已經開始更加努力地更新 QML 語言,使其在未來更安全、更易于使用,Qt 6.0 – 6.2 在這里奠定了基礎,但這種持續的努力將在整個 Qt 6 系列中繼續進行,
  • 將屬性系結引入 C++ 屬性系結是使 QML 如此成功的概念之一,在 Qt 6 中,我們一直在 C++ 中提供該概念 ,
  • 新的圖形架構 Qt 6 在如何處理與底層作業系統 API 的集成方面采用了 全新的架構,得益于新的渲染硬體介面 (RHI),Qt 6 現在默認使用每個系統上可用的最佳圖形 API,顯著提高了兼容性——尤其是在桌面和移動作業系統(如 Windows 和 macOS 以及 iOS)上,
  • Qt Quick 的統一 2D 和 3D Qt Quick 一直是構建影片和流暢的 2D 用戶界面的框架,使用 Qt 6,我們也簡化了將 3D 內容集成到基于 QML 的應用程式的程序,深度集成使得在任何級別混合 2D 和 3D 內容變得微不足道,同時從系統中獲得最大性能,
  • CMake 構建系統 在 Qt 6 中,我們將構建系統從 qmake切換到 cmake,這是當今基于 C++ 的應用程式的標準構建系統,雖然在 Qt 6 的整個生命周期內仍支持 qmake,但初步用戶報告表明切換到 cmake 后有顯著改進,

三、添加模塊

開發 Qt 6.2 的主要作業之一是重新添加我們在 Qt 6.0 中遺漏的所有模塊和功能,除了極少數例外,Qt 5.15 支持的所有模塊現在也支持 Qt 6.2,

在 Qt 6.2 中,我們添加了對以下附加模塊的支持(在 Qt 6.1 中已有的模塊之上):

  • Qt Bluetooth
  • Qt Multimedia
  • Qt NFC
  • Qt Positioning
  • Qt Quick Dialogs
  • Qt RemoteObjects
  • Qt Sensors
  • Qt SerialBus
  • Qt SerialPort
  • Qt WebChannel
  • Qt WebEngine
  • Qt WebSockets
  • Qt WebView

這些模塊的 API 主要向后兼容 Qt 5,并且在移植到 Qt 6 時只需要對用戶代碼進行少量調整,

Qt 6.2 支持的 完整模塊串列 可以在我們的檔案中找到 ,

三、Qt 6.2 中的新功能

除了我們從 Qt 5 帶來的許多模塊之外,我們 在 6.2 中還有大量的 新特性和功能,我們來看一下,

(一)、Qt 快速 3D

Qt Quick 3D 獲得了一些很酷的新功能,現在支持 實體化渲染,允許您使用不同的變換渲染大量相同的物件,我們還添加了一個新的 API,用于向 場景添加 3D 粒子效果,

輸入處理已得到改進,我們現在可以為嵌入在 3D 場景中的 2D 專案正確創建 Qt Quick 輸入事件,我們還添加了一個新的 API,用于從場景中的任意點進行基于光線的拾取,

(二)、QML工具

Qt 6.2 對 QML 工具進行了較大改進,我們現在有一個公共的 CMake API ,它極大地簡化了創建您自己的 QML 模塊的程序,

QML linter (qmlint) 是一種工具,用于檢查 QML 源代碼的最佳實踐、潛在的編碼和性能問題,并幫助撰寫更易于維護的 QML,該工具經歷了很大的變化,現在可以完全配置,無論是在命令列級別,還是通過組態檔,甚至是 QML 檔案本身中的各個塊,此外,它現在可以生成 JSON 輸出以簡化與其他工具或自動化系統的集成,

QML 格式化程式 (qmlformat) 現在使用 QML dom 庫,大大改進了生成的輸出,

(三)、Qt多媒體

Qt 多媒體在 Qt 6 中發生了一些相當大的變化,它是我們在 Qt 5 的生命周期中不滿意的 API 之一,因此,我們退后一步,對 Qt 6 進行了一些更廣泛的 API 和架構更改,沒有過多考慮向后兼容性的模塊,

盡管如此,從 Qt 5 中的 Qt 多媒體移植到 Qt 6 應該相對簡單,

Qt 6 中的 Qt 多媒體確實支持一些我們在 Qt 5 中從未設法正確支持的高度要求的功能,示例包括播放的字幕和語言選擇支持以及媒體捕獲的可配置設定,

內部架構已經過清理,不再像 Qt 5 那樣通過公共 API 公開,這將使我們能夠更快地修復錯誤,并使將來添加新功能變得更加容易,您可以在有關 Qt 6 中的 Qt 多媒體的單獨博客文章中找到更多詳細資訊,

然而,由于這些巨大的變化,該模塊仍然存在粗糙的邊緣,并且可能在實作中存在相當多的錯誤,但是,我們相信多媒體是一項必不可少的功能,我們將在 Qt 6.2 中完全支持該模塊,

因此,我們將在補丁級別版本的常規提交策略上有所偏離,如果需要修復較大的問題,可能會添加一些較小的 API,

此外,我們將努力在即將發布的補丁級別版本中盡快修復任何報告的錯誤,

(四)、整個程序中的小改進

幾乎所有其他模塊都看到了許多較小的 API 添加和改進,

我們已經移植了許多 API 以利用新的屬性系統,以便您可以使用 C++ 中的屬性系結,這項作業尚未完成,我們將在未來的版本中繼續,

我們還在各個地方修復了許多 API 缺點和缺失的功能,僅舉幾個例子:

  • Qt Charts 獲得了一些新的 API,以提高便利性并使事情更加可定制,
  • 我們為 QImage 添加了浮點影像格式,
  • QByteArray::number() 現在可以正確處理 10 以外的基數的負值,
  • QLockFile 現在具有采用 std::chrono 的多載
  • Qt Network 支持多個可以在運行時共存的 SSL 后端,

(五)、Qt Creator 和 Qt Design Studio

Qt Creator 和 Qt Design Studio 也做了大量作業,以確保它們為 Qt 6.2 提供一流的支持,Qt Creator 5 包含您為 Qt 6.2 開發所需的一切,

我們今天還發布了全新版本的 Qt Design Studio,Qt Design Studio 2.2 基于 Qt 6.2,極大地支持在一個圖形工具中創建基于 Qt Quick 和 Qt Quick 的 3D 用戶界面,您可以輕松地在目標硬體上測驗這些,無論是臺式機、移動設備還是嵌入式設備,有關 更多詳細資訊,請查看有關Qt Design Studio 2.2的單獨博客文章,

四、新平臺

在這里插入圖片描述

對于 Qt 6.2,我們做了很多作業來改進我們對當前支持平臺的支持,包括桌面和移動端,例如,通過改進我們對 HighDPI 渲染的支持和在 iOS 上添加 NFC 后端,

最重要的是,Qt 6.2 大大擴展了支持平臺的范圍:

Qt 6.2 完全支持 Apple Silicon 上的 macOS,Qt 現在可以輕松創建通用二進制檔案并在 Intel 和 Apple Silicon 上為 macOS 進行開發,當然,該版本也在我們的 CI 系統中進行了全面測驗,一直可以通過 Rosetta 層在 Apple 芯片上運行 Qt 應用程式,但 Qt 6.2 現在提供了在 Apple 芯片上本地運行的完整支持,

Qt 6.2 還恢復了對 INTEGRITY 和 QNX 實時作業系統的支持,支持需要 C++17 工具鏈和最新版本的作業系統,QNX 的最低要求是 7.1 版,在 INTEGRITY 上,我們支持 19.0.13 版,

針對 Qt 6.2 的 webOS 驗證也已完成,以進一步加強 Qt 對 webOS 的承諾,

有很多作業正在進行以支持 Windows 11,我們希望能夠在 6.2 補丁級別版本中為其提供全面支持,Windows on ARM HW 也可作為 Qt 6.2 的技術預覽版提供,

最后,我們做了進一步的作業來改進我們對 WebAssembly 的支持,它在 Qt 6.2 中作為技術預覽提供支持,

Qt for Python 今天也發布了,大家可以試一試,未來幾天將發布一篇單獨的博客文章,重點介紹最新 Qt 6.2 更改中采用的所有功能,敬請關注!

五、從 Qt 5 移植

在開發 Qt 6 時,與 Qt 5 的源代碼兼容性一直是我們作業的關鍵部分,有一些地方我們不得不在某種程度上打破這種兼容性,以進行一些必需的架構更改或為我們帶來一些巨大的性能優勢,

在大多數情況下,從 Qt 5 移植到 Qt 6 應該很簡單,在Qt的6移植指南 列出了所需要的步驟,并具有更多的資訊,您還可以從我們的合作伙伴之一或我們的顧問那里獲得移植幫助,

移植到 Qt 6 的典型步驟是:

  • 檢查您是否使用了受支持的編譯器和平臺版本
  • 首先在 Qt 6 模式下使用 Qt 5.15 編譯(使用 QT_DISABLE_DEPRECATED_BEFORE 宏)
  • 然后用 Qt 6.x 編譯 - 如果需要,在移植階段利用兼容性模塊

有了這些,您就可以在 Qt 6 上運行應用程式,并可以開始使用它提供的所有新特性和功能,例如,如果您的應用程式使用 QML,請運行 qmlint 工具并修復它給出的警告,

六、現在試試

在為您提供下載 Qt 6.2 的鏈接之前,我想向您指出 Qt 6.2的發行說明,發行說明還包含有關自 Qt 6.1 以來我們所做更改的許多詳細資訊,包括已修復錯誤的完整串列,

它們還包含為 Qt 6.2 貢獻補丁的所有人的完整串列,串列太長,無法在此處重現,但我要感謝大家幫助和實作 Qt 6.2,

如果您已經安裝了 Qt,那么獲得 Qt 6.2 的最簡單方法是通過在線安裝程式,如果沒有,您可以從您的Qt 帳戶 或通過我們的網頁下載,

我希望你會喜歡 Qt 6.2,讓我們知道事情的進展并報告您可能發現的任何錯誤,以便在即將發布的補丁版本中使 Qt 6.2 變得更好,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307351.html

標籤:其他

上一篇:Baacloud打不開,官網404進不去,服務器宕機,疑似跑路,附-臨時解決方案

下一篇:IOS、iPhone、手機安裝Fiddler證書后依舊提示證書不受信任無法訪問網路的解決方案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more