QT4到QT5移植出现的一些问题

编程入门 行业动态 更新时间:2024-10-28 00:25:40

QT4到QT5移植出现的一些问题

QT4到QT5移植出现的一些问题

转自: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 <QtGui/QApplication>改为#include <QApplication>

2、fatal error: QtGui/QAction: No such file or directory

2.1错因:

在Qt4中,QAction是QtGui模块的一部分。在Qt5中,它是QtWidgets模块的一部分。

2.2解决:

最好的选择是在包含标题时不指定模块名称。将

#include <QTGui/QAction>改为#include <QAction>

3、fatal error: QSound: No such file or directory #include <QSound>

解决:

打开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<QWidget>

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版权协议,转载请附上原文出处链接及本声明。
原文链接:

好文章:Qt应用和错误笔记_qinstallmsghandler' was not declared in this scope-CSDN博客

更多推荐

QT4到QT5移植出现的一些问题

本文发布于:2023-11-15 01:18:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1591141.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!