QT升級6.0以上版本遇到問題以及解決方法
前言
最近重裝QT的時候發(fā)現(xiàn)QT已經(jīng)升級到了6.0以上的新版本。既然是重裝,那就跟進(jìn)新的更新。更新新的QT后以前的舊版本建立的工程,自然會出現(xiàn)兼容性的問題,本文就把在后續(xù)各個QT工程在QT6.0版本下遇到的問題已經(jīng)解決辦法記錄下來,以便在其他工程遇到同樣的問題可以查詢快速解決問題。
QRegExp類的使用沒有申明
QT6工程編譯使用到QRegExp
類時會出現(xiàn)報錯
error: 'QRegExp' was not declared in this scope
出現(xiàn)以上問題主要是QT6.0以上的程序把 QRegExp
類移動到了core5compat
中了,解決方法便是在pro文件中添加QT += core5compat
,并且在使用到QRegExp
類的文件中添加包含的頭文件#include <QtCore5Compat>
,由于工程的文件較多,逐個添加包含文件也是一個較大的工程,不知道是否有更好與更快的方法。
另外一種解決方法是使用QRegularExpression
替代QRegExp
。在使用到的QRegularExpression
的文件中添加頭文件,#include <QRegularExpression>
。同時QRegExpValidator
使用QRegularExpressionValidator
替代。
根據(jù)QT官方介紹QRegularExpression
在功能和性能方面是對QRegExp
的重大改進(jìn),應(yīng)在所有新代碼中使用。因此這里使用的第二種方法進(jìn)行修復(fù)以上問題。
QString類沒有sprintf成員
QT6工程編譯使用到QString
類時會出現(xiàn)報錯
error: 'class QString' has no member named 'sprintf'; did you mean 'asprintf'?
這個問題比較簡單,QT Creater已經(jīng)給了提示,詢問是否使用asprintf
替代,查看了幫助手冊說明This function (asprintf) was introduced in Qt 5.5.根據(jù)建議替代就好了。
qrand類沒有定義
QT6工程編譯使用到qrand
類時會出現(xiàn)報錯
error: 'qrand' was not declared in this scope; did you mean 'srand'?
這個問題比較看似簡單,QT Creater已經(jīng)給了提示,詢問是否使用srand
替代,結(jié)果使用srand
替代后又提示
error: No matching function for call to 'srand'
查詢官網(wǎng)發(fā)得到的結(jié)果是qrand
與srand
均在QT5.15版本之后被拋棄了,在QT6版本中使用QRandomGenerator
替代了。
QDateTime類沒有toTime_t成員
QT6工程編譯使用到QDateTime
類時會出現(xiàn)報錯
error: 'class QDateTime' has no member named 'toTime_t'
QDateTime
類中的toTime_t
成員本來實現(xiàn)的功能是將當(dāng)前時間轉(zhuǎn)化為時間戳。查看QT6的QDateTime
類的幫助文件,應(yīng)該是使用toMSecsSinceEpoch
成員替代了。
到此這篇關(guān)于QT升級6.0以上版本遇到問題以及解決方法的文章就介紹到這了,更多相關(guān)QT升級6.0以上版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C++中賦值,關(guān)系,函數(shù)調(diào)用運算符重載的實現(xiàn)
本文主要為大家講解一下三個C++中的運算符重載,分別是賦值運算符重載、關(guān)系運算符重載和函數(shù)調(diào)用運算符重載,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06

kernel劫持modprobe?path內(nèi)容詳解

C++?JSON庫?nlohmann::basic_json::accept的用法解析

Qt學(xué)習(xí)筆記之QPalette調(diào)色板類