Qt 프로젝트 를 Qt6 토혈 경험 치 총화 로 승급
직관 총화
4.567917.바퀴 를 많이 추 가 했 고 기 존의 모듈 을 더욱 세밀 하 게 나 누 었 기 때문에 관 리 를 편리 하 게 하기 위해 서 일 것 이다4.567917.과도 하 게 포 장 된 것들 을 제거(예 를 들 어 같은 기능 에 여러 개의 함수 가 있 음)하여 하나의 함수 만 이 기능 을 수행 하도록 보장 했다4.567917.Qt5 에서 Qt4 를 호 환 하 는 방법 을 폐기 하고 Qt5 에 대응 하 는 새로운 함 수 를 사용 해 야 합 니 다4.567917.시대 의 흐름 에 따라 날로 증가 하 는 고객 수 요 를 만족 시 키 기 위해 새로운 특성 을 많이 증가 했다4.567917.일부 모듈 과 유형 과 처 리 를 혁명적 으로 재 작성 하여 운영 효율 이 많이 향상 되 었 다4.567917.매개 변수 유형의 변화 가 있 습 니 다.예 를 들 어 log*부터 qintptr*등 은 후속 적 인 확대 와 32 64 비트 의 서로 다른 시스템 에 대한 호 환 에 더욱 적응 합 니 다4.567917.소스 코드 의 double 데이터 형식 은 모두 qreal 로 바 뀌 었 고 Qt 내부 데이터 형식 과 고도 로 일치 하고 통일 되 었 습 니 다4.567917.제 가 테스트 한 것 은 모두 QWidget 부분 입 니 다.quick 부분 은 테스트 하지 않 았 습 니 다.quick 부분 업데이트 가 더 많 을 것 같 습 니 다4.567917.Qt 6.0 에서 Qt 6.2 사이 의 버 전 을 사용 하지 않 는 것 을 강력 히 권장 합 니 다.일부 모듈 은 아직 부족 합 니 다.상대 적 으로 BUG 도 많 습 니 다.6.2 버 전 을 정식 적 으로 이전 하 는 것 을 추천 합 니 다경험 총화
//pro
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
greaterThan(QT_MAJOR_VERSION, 5): QT += core5compat
//
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
#include <QtWidgets>
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
#include <QtCore5Compat>
#endif
3.기본 Qt6 에서 높 은 점 수 를 가 진 화면 지원 을 켜 면 화면 이 커 지고 심지어 글씨체 가 허 약해져 서 많은 사람들 이 익숙 하지 않 을 것 입 니 다.이런 모델 은 프로그램 에서 많은 좌표 계산 이 device PixelRatio 로 연산 하지 않 으 면 100%이상 한 문제 가 발생 할 수 있 습 니 다.좌표 가 정확 하지 않 기 때 문 입 니 다.이 효 과 를 취소 하려 면 높 은 화면 크기 조정 인 자 를 설정 할 수 있 습 니 다.
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif
4.기 존의 난수 함수 알림 은 QRandomGenerator 로 대체 합 니 다.모든 qt 버 전 을 호 환 하기 위해 가장 작은 방법 은 c++의 난수 로 바 꾸 는 것 입 니 다.예 를 들 어 qsrand 함 수 를 srand 로 바 꾸 고 qrand 함 수 를 rand 로 바 꾸 는 것 입 니 다.소스 코드 를 본 적 이 있 습 니 다.사실은 봉 인 된 것 은 c++의 랜 덤 수 입 니 다.예 를 들 어 qSin 봉 인 된 sin 과 비슷 한 패키지 가 많 습 니 다.5.QColor 의 light 는 lighter 로,dark 는 darker 로 바 뀌 었 는데,사실 lighter,darker 라 는 두 가지 방법 은 이전에 줄곧 있 었 다.
6.QFontMetricsF 의 fm.width 를 fm.horizontal Advance 로 바 꾸 고 5.11 부터 새 함 수 를 사용 합 니 다.
7.QPalette 팔레트 매 거 진 값,Foreground=WindowText,Background=Window,그 중에서 Foreground 와 Background 가 없어 졌 습 니 다.WindowText 와 Window 로 대체 해 야 합 니 다.예전 에 있 었 습 니 다.비슷 한 것 은 setTextColor 가 setForeground 로 바 뀌 었 다.
8.QWheelEvent 의 dela()는 angleDelta().y(),pos()는 position()로 변경 합 니 다.
9.svg 모듈 은 svgwidgets 를 분 리 했 습 니 다.이 모듈 을 사용 하면 pro 에 QT+=svgwidgets 를 추가 해 야 합 니 다.
10.qlayot 의 margin()함수 가 contentsMargins().left()로 바 뀌 었 습 니 다.원본 코드 를 보면 이전의 margin()이 되 돌아 온 것 이 contentsMargins().left()라 는 것 을 알 수 있 습 니 다.네 개의 수치 가 같 을 때 기본 네 개의 수 치 는 같 습 니 다.유사 한 것 은 setMargin 을 제거 하고 모두 setContents Margins 를 사용 합 니 다.
11.이전 QChar c=0xf 105 는 모두 강제 변환 QChar c=(QChar)0xf 105 로 바 꿔 야 합 니 다.더 이상 암시 적 변환 이 없습니다.그렇지 않 으 면 컴 파일 오류 알림 error:conversion from'int'to'QChar'is ambiguous.
12.qSort 등 일부 함 수 는 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 으로 바 꾸 면 함수 기능 이 대체적으로 일치 합 니 다.QTransform 류 는 Qt4 에서 계속 있 습 니 다.
15.QTime 타 이 머 를 지 웠 습 니 다.QElapsedTimer 로 바 꿔 야 합 니 다.QElapsedTimer 류 는 Qt4 에 있 습 니 다.
16.QApplication::desktop()이 폐기 되 었 습 니 다.QApplication::primary Screen()으로 바 뀌 었 습 니 다.
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
#include "qscreen.h"
#define deskGeometry qApp->primaryScreen()->geometry()
#define deskGeometry2 qApp->primaryScreen()->availableGeometry()
#else
#include "qdesktopwidget.h"
#define deskGeometry qApp->desktop()->geometry()
#define deskGeometry2 qApp->desktop()->availableGeometry()
#endif
17.현재 화면 색인 과 사 이 즈 를 각각 처리 해 야 합 니 다.
//
int QUIHelper::getScreenIndex()
{
//
int screenIndex = 0;
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
int screenCount = qApp->screens().count();
#else
int screenCount = qApp->desktop()->screenCount();
#endif
if (screenCount > 1) {
//
QPoint pos = QCursor::pos();
for (int i = 0; i < screenCount; ++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;
}
}
}
return screenIndex;
}
//
QRect QUIHelper::getScreenRect(bool available)
{
QRect rect;
int screenIndex = 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
}
return rect;
}
18.QRegExp 클래스 가 core5compat 모듈 로 이동 되 었 습 니 다.헤더 파일\#include 를 주동 적 으로 도입 해 야 합 니 다.19.QWheelEvent 구조 파라미터 와 대응 하 는 계산 방위 함수 가 변 했다.
//
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
QWheelEvent wheelEvent(QPoint(0, 0), -scal, Qt::LeftButton, Qt::NoModifier);
#else
QWheelEvent wheelEvent(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_VERSION < QT_VERSION_CHECK(6,0,0))
int degrees = whellEvent->delta() / 8;
#else
int degrees = whellEvent->angleDelta().x() / 8;
#endif
// ,*15
int steps = degrees / 15;
20.qVariantValue 를 qvariant 로 변경cast,qVariant SetValue(v,value)가 v.setValue(val)로 바 뀌 었 습 니 다.가장 원시 적 인 방법 으로 되 돌아 가 는 것 과 같 습 니 다.qVariantValue 소스 코드 를 보면 qvariant 입 니 다.cast。21.QStyleOption 의 init 가 initFrom 로 바 뀌 었 습 니 다.
22.QVariant::Type 을 QMetaType 으로 바 꿨 습 니 다.:Type,그 자체 의 이전 QVariant::Type 이 봉 인 된 것 은 QMetaType::Type 입 니 다.
23.QStyleOptionViewItemV 2 V3 V4 와 같은 것 이 모두 없어 졌 습 니 다.잠시 QStyleOptionViewItem 으로 대체 할 수 있 습 니 다.
24.QFont 의 resolve 의 리 셋 함수 가 resolve Mask 로 바 뀌 었 습 니 다.
25.QSettings 의 setInicodec 방법 이 제거 되 었 습 니 다.기본 값 은 utf 8 이 므 로 설정 할 필요 가 없습니다.
26.qcombobox 의 activated(QString)와 currentIndexChanged(QString)신 호 는 삭 제 했 습 니 다.int 색인 인자 의 그것 을 사용 한 다음 색인 을 통 해 값 을 얻 었 습 니 다.개인 적 으로 이 건 삭제 할 필요 가 없다 고 생각 합 니 다.
27.qtscript 모듈 은 완전히 사 라 졌 습 니 다.Qt5 시대 의 후기 버 전에 서 폐기 모듈 로 제시 되 었 음 에 도 불구 하고 Qt6 까지 일치 하 게 버 텨 야 정식 적 으로 폐기 되 었 습 니 다.각종 json 데이터 분석 은 모두 qjson 류 로 바 뀌 었 습 니 다.
28.QByteArray 의 append index Of lastIndex Of 등 여러 방법의 QString 매개 변수 과부하 함수 가 폐기 되 었 습 니 다.QByteArray 를 직접 전송 하려 면 원래 매개 변 수 를 바탕 으로'toUtf 8()'을 추가 하 십시오.원본 코드 를 봐 도 이전의 QString 인자 도.toUtf 8()로 바 꿔 서 비교 할 수 있 습 니 다.
29.QDateTime 의 시간 변환 함수 toTimet + setTime_t 이름 이 바 뀌 었 습 니 다.대응 하 는 것 은 toSecs SinceEpoch+setSecs SinceEpoch 로 바 뀌 었 습 니 다.이 두 가지 방법 은 Qt 5.8 에 새로 추 가 된 것 입 니 다.
30.QLabel 의 pixmap 함 수 는 포인터*pixmap()였 으 나 이 제 는 인용 pixmap()로 바 뀌 었 습 니 다.
31.QTableWidget 의 sortByColumn 방법 은 기본 오름차 순 을 제거 합 니 다.두 번 째 매개 변 수 를 입력 하여 오름차 순 을 표시 해 야 합 니 다.
32.qtnetwork 의 오류 신호 error 가 error Occurred 로 바 뀌 었 습 니 다.
33.XmlPatterns 모듈 나무 가 있 습 니 다.모두 xml 모듈 로 재 분석 합 니 다.
34.nativeEvent 의 매개 변수 유형 이 바 뀌 었 습 니 다.
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
#else
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
#endif
Qt 프로젝트 가 Qt6 로 업그레이드 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt로 문자와 이미지의 혼합 텍스트 그리기텍스트를 그리려면 QPainter::drawText 함수를 사용하지만 텍스트와 동시에 이미지 (아이콘 등)를 함께 그리기를 원합니다. QLabel와 QPushButton는 이미지와 텍스트를 표시하는 기능을 가지고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.