• 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 改为#include

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

    2.1错因:

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

    2.2解决:

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

    #include 改为#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博客

  • 相关阅读:
    Hadoop2.x一次分布式HA启动时 ERROR Cannot set priority of xxxx process 解决方式
    如何选择合适的自动化测试工具?
    k8s中应用GlusterFS类型StorageClass
    【机器学习】《ChatGPT速通手册》笔记
    go 热重载工具air
    【Lua 入门基础篇(三)】流程控制&函数&ipairs&pairs
    【Python 零基础入门】 函数
    第8章 MySQL的数据目录
    实用工具系列 - Pycharm插件推荐
    Flink Data Transformation
  • 原文地址:https://blog.csdn.net/xiaxiaojing/article/details/134381065