转自:QT4到QT5移植出现的一些问题_西门子3gl qt5 许可证-CSDN博客
在上述作者基础上修改:
一、问题1:头文件的问题
1、QtGui/QApplication: No such file or directory
1.1错因
原因是Qt5源文件位置的改动
1.2解决
pro文件里,QT += core gui 改为 QT += core gui widgets
.h文件里,#include
2、fatal error: QtGui/QAction: No such file or directory
2.1错因:
在Qt4中,QAction是QtGui模块的一部分。在Qt5中,它是QtWidgets模块的一部分。
2.2解决:
最好的选择是在包含标题时不指定模块名称。将
#include
3、fatal error: QSound: No such file or directory #include
解决:
打开pro文件,在里面包含 :
QT += multimedia
总结:该问题已经遇到,考虑到与历史版本兼容,打开pro文件,增加下面一行
great二Than(QT_MAJOR_VERSION,4):QT += multimedia
4、提示error:’setCodecForTr’ is not a member of ‘QTextCodec’,error: 'setCodecForCStrings' is not a member of 'QTextCodec'等错误
4.1错因:
由于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"));
4.2解决:
在程序中,main函数里将这两行代码注释掉就可以了.
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
5. error: invalid use of incomplete type 'class QWidget'
5.1 错因
这是因为在QT5中,类继承QWidget需要添加头文件
5.2解决
添加头文件
#include
6.error:qInstallMsgHandler was not declared
6.1错因
这是因为在QT4和QT5中这个函数的名称稍有区别。
6.2解决
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) qInstallMessageHandler(myMessageOutput);
#else
qInstallMsgHandler(myMessageOutput);
#endif
二、问题2:编译问题
1、UnicodeUTF8' is not a member of 'QApplication
修改:
setText(QApplication::translate("MainWindow", "&Quitar", 0, QApplication::UnicodeUTF8));
为:
setText(QApplication::translate("MainWindow", "&Quitar", 0);
更多错误gTransition from Qt 4.x to Qt5 - Qt Wiki
————————————————
版权声明:本文为CSDN博主「吻等离子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43445867/article/details/126002930
好文章:Qt应用和错误笔记_qinstallmsghandler' was not declared in this scope-CSDN博客