版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第將Qt項目升級到Qt6吐血經(jīng)驗總結(jié)greaterThan(QT_MAJOR_VERSION,4):QT+=widgets
greaterThan(QT_MAJOR_VERSION,5):QT+=core5compat
//代碼中引入頭文件
#if(QT_VERSION=QT_VERSION_CHECK(5,0,0))
#includeQtWidgets
#endif
#if(QT_VERSION=QT_VERSION_CHECK(6,0,0))
#includeQtCore5Compat
#endif
3.默認Qt6開啟了高分屏支持,界面會變得很大,甚至字體發(fā)虛,很多人會不習慣,因為這種模式如果程序很多坐標計算沒有采用devicePixelRatio進行運算的話,100%會出現(xiàn)奇奇怪怪的問題,因為坐標不準確了。要取消這種效果可以設(shè)置高分屏縮放因子。
#if(QT_VERSION=QT_VERSION_CHECK(6,0,0))
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif
4.原有的隨機數(shù)函數(shù)提示用QRandomGenerator替代,為了兼容所有qt版本,改動最小的辦法是直接用c++中的隨機數(shù),比如qsrand函數(shù)換成srand,qrand函數(shù)換成rand,查看過源代碼,其實封裝的就是c++中的隨機數(shù),很多類似的封裝比如qSin封裝的sin。
5.QColor的light改成lighter,dark改成darker,其實lighter、darker這兩個方法以前一直有。
6.QFontMetricsF中的fm.width換成fm.horizontalAdvance,從5.11開始用新函數(shù)。
7.QPalette調(diào)色板枚舉值,F(xiàn)oreground=WindowText,Background=Window,其中Foreground和Background沒有了,要用WindowText和Window替代,以前就有。類似的還有setTextColor改成了setForeground。
8.QWheelEvent的delta()改成angleDelta().y(),pos()改成position()。
9.svg模塊拆分出來了svgwidgets,如果用到了該模塊則需要在pro增加QT+=svgwidgets。
10.qlayout中的margin()函數(shù)換成contentsMargins().left(),查看源碼得知以前的margin()返回的就是contentsMargins().left(),在四個數(shù)值一樣的時候,默認四個數(shù)值就是一樣。類似的還有setMargin移除了,統(tǒng)統(tǒng)用setContentsMargins。
11.之前QCharc=0xf105全部要改成強制轉(zhuǎn)換QCharc=(QChar)0xf105,不再有隱式轉(zhuǎn)換,不然編譯報錯提示error:conversionfrom'int'to'QChar'isambiguous。
12.qSort等一些函數(shù)用回c++的std::sort。
#if(QT_VERSION=QT_VERSION_CHECK(6,0,0))
std::sort(ipv4s.begin(),ipv4s.end());
#else
qSort(ipv4s);
#endif
13.Qt::WA_NoBackground改成Qt::WA_OpaquePaintEvent。
14.QMatrix類廢棄了沒有了,換成QTransform,函數(shù)功能基本一致,QTransform類在Qt4就一直有。
15.QTime計時去掉了,需要改成QElapsedTimer,QElapsedTimer類在Qt4就一直有。
16.QApplication::desktop()廢棄了,換成了QApplication::primaryScreen()。
#if(QT_VERSIONQT_VERSION_CHECK(5,0,0))
#include"qscreen.h"
#definedeskGeometryqApp-primaryScreen()-geometry()
#definedeskGeometry2qApp-primaryScreen()-availableGeometry()
#else
#include"qdesktopwidget.h"
#definedeskGeometryqApp-desktop()-geometry()
#definedeskGeometry2qApp-desktop()-availableGeometry()
#endif
17.獲取當前屏幕索引以及尺寸需要分別處理。
//獲取當前屏幕索引
intQUIHelper::getScreenIndex()
//需要對多個屏幕進行處理
intscreenIndex=0;
#if(QT_VERSION=QT_VERSION_CHECK(5,0,0))
intscreenCount=qApp-screens().count();
#else
intscreenCount=qApp-desktop()-screenCount();
#endif
if(screenCount1){
//找到當前鼠標所在屏幕
QPointpos=QCursor::pos();
for(inti=0;iscreenCount;++i){
#if(QT_VERSION=QT_VERSION_CHECK(5,0,0))
if(qApp-screens().at(i)-geometry().contains(pos)){
#else
if(qApp-desktop()-screenGeometry(i).contains(pos)){
#endif
screenIndex=i;
break;
returnscreenIndex;
//獲取當前屏幕尺寸區(qū)域
QRectQUIHelper::getScreenRect(boolavailable)
QRectrect;
intscreenIndex=QUIHelper::getScreenIndex();
if(available){
#if(QT_VERSION=QT_VERSION_CHECK(5,0,0))
rect=qApp-screens().at(screenIndex)-availableGeometry();
#else
rect=qApp-desktop()-availableGeometry(screenIndex);
#endif
}else{
#if(QT_VERSION=QT_VERSION_CHECK(5,0,0))
rect=qApp-screens().at(screenIndex)-geometry();
#else
rect=qApp-desktop()-screenGeometry(screenIndex);
#endif
returnrect;
}
18.QRegExp類移到了core5compat模塊,需要主動引入頭文件#include。
19.QWheelEvent構(gòu)造參數(shù)和對應(yīng)的計算方位函數(shù)變了。
//模擬鼠標滾輪
#if(QT_VERSIONQT_VERSION_CHECK(6,0,0))
QWheelEventwheelEvent(QPoint(0,0),-scal,Qt::LeftButton,Qt::NoModifier);
#else
QWheelEventwheelEvent(QPointF(0,0),QPointF(0,0),QPoint(0,0),QPoint(0,-scal),Qt::LeftButton,Qt::NoModifier,Qt::ScrollBegin,false);
#endif
QApplication::sendEvent(widget,wheelEvent);
//鼠標滾輪直接修改值
QWheelEvent*whellEvent=(QWheelEvent*)event;
//滾動的角度,*8就是鼠標滾動的距離
#if(QT_VERSIONQT_VERSION_CHECK(6,0,0))
intdegrees=whellEvent-delta()/8;
#else
intdegrees=whellEvent-angleDelta().x()/8;
#endif
//滾動的步數(shù),*15就是鼠標滾動的角度
intsteps=degrees/15;
20.qVariantValue改成qvariant_cast,qVariantSetValue(v,value)改成了v.setValue(val)。相當于退回到最原始的方法,查看qVariantValue源碼封裝的就是qvariant_cast。
21.QStyleOption的init改成了initFrom。
22.QVariant::Type換成了QMetaType::Type,本身以前的QVariant::Type封裝的就是QMetaType::Type。
23.QStyleOptionViewItemV2V3V4之類的全部沒有了,暫時可以用QStyleOptionViewItem替代。
24.QFont的resolve的一個重載函數(shù)換成了resolveMask。
25.QSettings的setIniCodec方法移除了,默認就是utf8,不需要設(shè)置。
26.qcombobox的activated(QString)和currentIndexChanged(QString)信號刪除了,用int索引參數(shù)的那個,然后自己通過索引獲取值。個人覺得這個沒必要刪除。
27.qtscript模塊徹底沒有了,盡管從Qt5時代的后期版本就提示為廢棄模塊,一致堅持到Qt6才正式廢棄,各種json數(shù)據(jù)解析全部換成qjson類解析。
28.QByteArray的appendindexOflastIndexOf等眾多方法的QString參數(shù)重載函數(shù)廢棄了,要直接傳QByteArray,就在原來參數(shù)基礎(chǔ)上加上.toUtf8()。查看源碼也看得到以前的QString參數(shù)也是轉(zhuǎn)成.toUtf8()再去比較。
29.QDateTime的時間轉(zhuǎn)換函數(shù)toTime_t+setTime_t名字改了,對應(yīng)改成了toSecsSinceEpoch+setSecsSinceEpoch,這兩個方法在Qt5.8時候新增加的。
30.QLabel的pixmap函數(shù)之前是指針*pixmap()現(xiàn)在換成了引用pixmap()。
31.QTableWidget的sortByColumn方法移除了默認升序的方法,必須要填入第二個參數(shù)表示升序還是降序。
32.qtnetwork中的錯誤信號error換成了errorOccurred。
33.Xml
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026山東煙臺黃金職業(yè)學院招聘備考題庫及1套參考答案詳解
- 2026廣東深圳市寶安區(qū)西鄉(xiāng)桃源居幼兒園(集團)招聘工作人員7人備考題庫及完整答案詳解1套
- 2026北京昌平區(qū)機關(guān)企事業(yè)單位招錄實習人員394人備考題庫(第一批)有完整答案詳解
- 2026年度濟南市章丘區(qū)所屬事業(yè)單位公開招聘初級綜合類崗位人員備考題庫完整參考答案詳解
- 2026四川瀘州市精神病醫(yī)院(瀘州市精神衛(wèi)生中心)招聘編外輔助護士4人備考題庫完整答案詳解
- 2026上半年浙江舟山市國際海運職業(yè)技術(shù)學院招聘教師3人備考題庫及1套參考答案詳解
- 黑河2025年黑龍江北安市事業(yè)單位招聘120人筆試歷年參考題庫附帶答案詳解
- 陽江廣東陽江市供銷合作聯(lián)社直屬基層供銷社招聘管理人員筆試歷年參考題庫附帶答案詳解
- 莆田2025年福建莆田市荔城區(qū)招聘中小學幼兒園編外合同教師109人筆試歷年參考題庫附帶答案詳解
- 甘肅2025年甘肅省總工會直屬事業(yè)單位招聘7人筆試歷年參考題庫附帶答案詳解
- 2024中考會考模擬地理(福建)(含答案或解析)
- CJ/T 164-2014節(jié)水型生活用水器具
- 購銷合同范本(塘渣)8篇
- 貨車充電協(xié)議書范本
- 屋面光伏設(shè)計合同協(xié)議
- 生鮮業(yè)務(wù)采購合同協(xié)議
- 夫妻門衛(wèi)合同協(xié)議
- 公司雙選工作方案
- GB/T 4340.2-2025金屬材料維氏硬度試驗第2部分:硬度計的檢驗與校準
- 銷售合同評審管理制度
- 泳池突發(fā)安全事故應(yīng)急預案
評論
0/150
提交評論