使用Qt5Compat庫從Qt 5移植到Qt 6


從Qt 5移植到Qt 6的過程一直很容易。在Qt 6的整個開發過程中,一直有意識地努力保持與Qt 5的盡可能多的源兼容性。盡管如此,移植仍需要一些努力。這篇簡短的文章總結了移植到Qt 6時所需的一些步驟。

在Qt 5中,有些類別已經有現有的替代品,並且某些類別在Qt 6開發階段得到了繼任者因此,能夠同時使用舊的和新的Qt版本編譯代碼可能很有意義。這樣可以確保將不使用任何版本的代碼進行編譯的工作量減至最少,從而使您的應用程序或庫可以繼續與Qt 5和Qt 6一起工作。另一個優點是,現有的單元測試對於大多數版本都可以繼續工作。移植的持續時間以及移植代碼所導致的回歸與Qt 6中引入的錯誤很容易區分開。

種類

下表列出了在Qt 6中已刪除但為了便於移植而保留在Qt5Compat中的類。它還包含將在Qt6中的新代碼中使用的類。

Qt 5類  Qt 6更換
QLinkedList 清單
QRegExp QRegularExpression
QStringRef QStringView
QXmlSimpleReader QXmlStreamReader
QTextCodec QStringConverter
QTextEncoder QStringEncoder
QTextDecoder QStringEncoder

調整構建系統

如果要繼續使用上述Qt 5類,則首先需要調整構建系統以鏈接到新的Qt5Compat模塊。對於qmake構建系統,將以下行添加到.pro文件中:

QT += core5compat

如果您已經將應用程序或庫移植到了cmake構建系統,請將以下內容添加到您的 CMakeList.txt

PUBLIC_LIBRARIES
Qt::Core5Compat

修復包括

除了顯然需要進行的構建系統更改外,您可能還需要修復前面提到的類的包含。您的實際代碼可能如下所示:

#include <QtCore / QRegExp>

需要針對新的Qt5Compat模塊進行更新:

#include <QtCore5Compat / QRegExp>

或使用更加簡單和可移植的版本:

#include <QRegExp>

期待

隨着Qt 6的出現,您可能已經考慮測試新的Qt 6 beta版本。如果您的代碼受上述一些Qt Core類更改的影響,這也將允許進行早期測試。對於您可能發現的任何問題,請向bugreports.qt.io提交詳細的錯誤報告提交錯誤報告時,請記住提及發現問題的Qt版本,並檢查是否存在重復項和已知問題也歡迎您加入Qt Project郵件列表和開發人員論壇中的討論。

https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-qt5compat-library


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM