Qt5升級到Qt6分步遷移教程小結(jié)
Qt框架的一個新的長期支持版本6.5最近發(fā)布。它為以前的版本引入了許多修復、改進和新功能。有些可能對您的應用程序有用(如果不是現(xiàn)在,可能會在將來),因此最好將應用程序遷移到最新版本的框架。
仍然有許多應用程序仍在使用Qt 5,因此直接遷移到最新版本的框架并不容易。在本文中主要指出從Qt 5順利遷移到Qt 6的最關(guān)鍵步驟。
那么,為什么是Qt 6呢?
- 改進了性能。Qt 6引入了一個新的渲染管線,可以提高性能并減少內(nèi)存使用量,從而產(chǎn)生更快、響應更快的應用程序。
- 改進的 QML。QML 已得到增強,性能更好,改進了對將C++類導出到 QML 的支持,以及用于調(diào)試 QML 代碼的更強大的工具。新的Qt快速編譯器允許您預編譯QML文件,以加快啟動時間。
- 改進的模塊。一些模塊已被重寫和改進,例如Qt Quick 3D,Qt Multimedia和Qt WebEngine。使用這些模塊的最新版本將確保您的應用程序符合當前標準。
- 附加模塊。許多模塊將作為附加組件提供。它將使Qt二進制文件更小,并允許您僅在項目中需要時才下載模塊。
- 統(tǒng)一后端。Qt 6提供了一個API來訪問多個環(huán)境中特定于平臺的功能。這包括圖形、多媒體、輸入和窗口系統(tǒng)。
- 長期支持。Qt 5已經(jīng)到了它的生命周期,雖然某些舊版本仍然有安全和錯誤修復,但任何新的特性或功能都只能在Qt 6中使用。如果您不希望您的應用程序過時得太快,您應該進行遷移。
這些是確保使用最新版本的Qt 6使您的應用程序與最新功能保持同步的主要內(nèi)容。應用程序的性能將比以前更好,并且將來維護應用程序?qū)⒏菀住?/p>
遷移到Qt 6的路徑
第 1 步、QT 移植到 QT 5.15
將應用程序移植到Qt 5的最新版本,然后切換到Qt 6要容易得多。這是因為Qt在6.5版本中只發(fā)布了簡化遷移到Qt 5.15的機制。從Qt 5的先前版本遷移到最新版本的Qt 5應該很簡單。
第 2 步、檢查模塊更改
在Qt 6中,Qt 5中提供的某些模塊不再可用。這些模塊將被刪除、重命名或合并到不同的模塊中。在最新版本中,幾個已刪除的模塊已經(jīng)刷新并添加到框架中。
通過檢查模塊更改,可以確保應用程序在遷移后按預期工作。當模塊不再存在時,關(guān)于如何表現(xiàn)的可能解決方案可能會有所不同。下面是幾個已棄用模塊的示例,以及如何更新使用它們的代碼。
- Qt 快速控制 1 → 使用新的 Qt 快速控制 2
- Qt Multimedia Widgets → 使用 Qt Multimedia 的 QML API
- Qt 圖形效果 → 使用 Qt5Compat 模塊(Qt Quick MultiEffect 從 Qt 6.5 開始)
因此,取決于需要替換的模塊。刪除模塊和其他更改的完整列表可以在Qt文檔中找到。
“是否需要檢查文檔中每個模塊的更改?”
沒必要。它可以幫助您找到已棄用API的正確替代品,但Qt creator工具可以提示不再受支持的代碼的所有部分。請看步驟4.
第 3 步、QT移植:檢查您的環(huán)境
Qt 6需要C++17或更高版本的編譯器(例如,對于Windows – MinGW 8.1.0或msvc 2019),因此如果您使用的是舊版本,則是時候升級了。Qt公司開發(fā)的工具也支持Qt 6,因為特定版本。對于Qt Creator,它是4.14,對于Qt Design Studio,它是2.0。
如果安裝了正確的編譯器和工具,則為 Qt 6 準備的應用程序應在移植后正確構(gòu)建和運行。
第 4 步、執(zhí)行移植到 QT 6
擺脫已棄用的功能。
在Qt 5.15中,Qt 6中不包含的所有內(nèi)容都被標記為已棄用。默認情況下,此代碼的使用將作為編譯器警告彈出。但是也可以選擇將其視為錯誤。
要確保這一點,需要定義它應設置為指定宏時,已棄用的功能(在給定版本的Qt或任何更早版本中)將被禁用。
QT_DISABLE_DEPRECATED_BEFORE
0x050F00
如果在生成過程中看到任何錯誤,則應重構(gòu)該部分。
不帶宏的輸出。應用已正確構(gòu)建。
使用宏輸出。無法構(gòu)建應用。
運行沖突并擺脫這些警告。
Clazy 是一個靜態(tài)分析工具,可作為 QtCreator 中的插件使用。Clazy 可以分析代碼并向您展示需要改進的地方。可以明確地告訴 Clazy 在執(zhí)行過程中要檢查什么。需要檢查一些特殊選項,這些選項可以指向Qt 6中不支持的代碼部分。Clazy 也能夠自動修復這些警告。
在移植過程中有用的選項:
- qt6-deprecated-api-fixes
- qt6-header-fixes
- qt6-qhash-signature
- qt6-fwd-fixes
- missing-qobject-macro
可以在首選項→分析器→Clang工具→診斷配置中更改延遲配置。
在移植過程中有用的選項:
輸出示例。
必要時使用 Qt5Compat 模塊。
在第2步中,提到了一個名為Qt5Compat模塊?
引入該模塊是為了更好的進行遷移和過渡。它提供了Qt 6中消失的一些類,例如QRegExp和QStringRef,但由于這一點,它仍然可以在Qt 6應用程序中使用。比如某些模塊在Qt 6中消失了,但將在下一個版本中作為MultiEffect重新引入。因此,在此期間,可以暫時使用Qt5Compat模塊來確保兼容性。但是當MultiEffect模塊可用時,應該重寫代碼以切斷過時的API。
如何將模塊導入到項目中:
頭文件包含也需要更改:
最后,請做好相關(guān)測試。
到此這篇關(guān)于Qt5升級到Qt6分步遷移教程小結(jié)的文章就介紹到這了,更多相關(guān)Qt5升級到Qt6內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++的靜態(tài)成員變量和靜態(tài)成員函數(shù)你了解多少
這篇文章主要為大家詳細介紹了C++的靜態(tài)成員變量和靜態(tài)成員函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02C++ 數(shù)據(jù)結(jié)構(gòu)實現(xiàn)兩個棧實現(xiàn)一個隊列
這篇文章主要介紹了詳解C++ 數(shù)據(jù)結(jié)構(gòu)實現(xiàn)兩個棧實現(xiàn)一個隊列的相關(guān)資料,需要的朋友可以參考下2017-03-03Qt將數(shù)據(jù)庫中的數(shù)據(jù)導出為html
這篇文章主要為大家詳細介紹了Qt如何實現(xiàn)將數(shù)據(jù)庫中的數(shù)據(jù)導出為html,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-12-12C和MFC巧妙獲取外網(wǎng)IP的兩種實現(xiàn)方法
這篇文章主要介紹了C和MFC巧妙獲取外網(wǎng)IP的兩種實現(xiàn)方法,功能非常的實用,需要的朋友可以參考下2014-07-07Qt6.3 + Clion +MSVC2019環(huán)境配置詳解
本文主要介紹了Qt6.3 + Clion +MSVC2019環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01