最近将一份代码从Qt4移植到了Qt5上,需要修改的一些细节记录一下:
①<QtGui/Qxxxxxx>报错No such Files or directory:Qt5弃用了QtGui,请将QtGui/删掉或将QtGui改为QtWidgets。
②QMessageBox需要在头文件中声明:在源文件头部加入#include即可。
③对于涉及输出中文的部分,Qt5舍弃了:
QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“UTF-8”));
将这两行注释掉,保留setCodecForLocale行即可。
④QCoreApplication::UnicodeUTF8已被弃用:将其删掉即可。
⑤false和true需小写,大写的话需自行添加一个头文件#include<windows.h>,下面贴出代码:
#ifndef WINDOWS_H
#define WINDOWS_H
#ifdef FALSE
#undef FALSE
#endif
#define FALSE 0
#ifdef TRUE
#undef TRUE
#endif
#define TRUE 1
typedef int BOOL, *PBOOL, *LPBOOL;
#endif // WINDOWS_H
⑥原Qt4上的round(非大写ROUND,这是两个不同的函数)函数直接用在Qt5上会产生歧义:在round前面加上::即可。
暂时只遇到这些问题,在移植过程中修改的东西可能会很多,请善用修改/替代功能:快捷键Ctrl+F。