Qt4 프로젝트와 Qt5 프로젝트 이식 시 문제 및 해결 방법

2517 단어
1. Qt4 프로젝트가 Qt5 프로젝트로 이전: 알림 error: #include No such file or directory
원인: Qt5y 원본 파일 위치의 변경으로 인해
해결 방법:
① 있다.pro 파일에서 Qt + = core gui를 Qt + = core gui widgets로 변경
②.h파일에서 #include에서 #include로 변경
2. Qt4 프로젝트가 Qt5 프로젝트로 이전: 알림 오류:'setCodecForTr'는'QTextCodec'의 구성원이 아닙니다.
원인: Qt버전의 업데이트 속도가 빠르고 업데이트와 동시에 많은 변화가 생겼다. Qt5버전 이전에 많은 사람들이 아래의 세 줄을 사용하는 습관이 있었다(중국어만 관련되면 이 세 줄이 온다).
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

하지만 Qt5에서 취소:
QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“UTF-8”));
해결 방법:
프로그램에서main 함수에서 이 두 줄 코드를 주석하면 됩니다.
3. makefile 알림'multiple target patterns.Stop’
원인: 일반적으로 Makefile에서 target 줄에 사칭이 있기 때문에 (사칭이makefile에서 하는 역할은 앞에 있는 컴파일된 목표를 표시하는 데 사용되며, 사칭이 있으면 오류를 보고합니다.
솔루션:
프로그램의 불필요한 사칭을 제거하면 된다.
4. 프로젝트 구축 시간 오류:'QObject & QObject:(const QObject &)'is private within this context.
원인: 정의된 것은 QObject의 하위 클래스입니다. 그 실례를 QT 용기(예를 들어 QList QHash 등)에 넣으면 위의 오류가 발생합니다.간단하게 말하면 QObject의 복사 구조 함수는 개인 것으로 그 하위 클래스를 용기에 넣을 때 그 복사본을 완성할 수 없다.
솔루션:
포인터를 사용하여 사용자 정의 하위 클래스를 포인터 형식으로 용기에 저장합니다.예: QListlist.
5 qt5.x에서 Qt4.8로 전환 문제 오류: QtWidget/QAction: No such file or directory
해결 방법: QtWidget을 QtGui로 교체
6 qt5.x에서 Qt4.8로 전환 문제 오류:'class QHeader View'has no member named'setSectionResize Mode'
해결 방법: TableView의 문제입니다. Qt5 이후에 setResizeMode가 setSectionResizeMode로 바뀌었기 때문에 section을 제거하면 됩니다.
7 qt5.x에서 Qt4.8로 전환 문제 오류:'itoa'was not declared in this scope
해결 방법:itoa는 표준 라이브러리가 아니라sprintf(tmp,'%d', i+1)로 바꿉니다.sprintf를 사용하면 됩니다.
8 qt5.x에서 Qt4.8로 전환 문제 오류:'QStingLiteral'이 범위에서 선언되지 않았습니다
해결 방법: 문제는 TCPServerWindows->setObjectName(QStringLiteral("TCPServerWindow")에서 발생합니다.QT 4.8 set ObjectName 이 QStringLiteral 이 형삼은 QSTring이므로 이 QStringLiteral 을 빼면 됩니다.
9 qt5.x에서 Qt4.8로 전환 문제 error:'Qt_5_6’ is not a member of ‘QDataStream’
해결 방법:
물론 Qt4.8이 어떻게 5.6에서 4.8 이하로 바뀌었는지.
10 구축 프로젝트 시간 오류: error:'staticMetaObject'is not a member of "ygbaseprotocol"
해결 방법:
클래스를 정의할 때 다음과 같이 QObject에서 상속을 추가합니다.
class ygbaseprotocol:public QObject
{
Q_OBJECT

}

좋은 웹페이지 즐겨찾기