Qt4项目与Qt5项目移植时问题及解决方法

1、Qt4项目迁移至Qt5项目:提示error:#include <QtGui/QApplication> No such file or directory

原因:由于Qt5y源文件位置的改动.

解决方法:

①在.pro文件里,将Qt += core gui改为Qt += core gui widgets

②.h文件里,#include <QtGui/QApplication>改为#include

2、Qt4项目迁移至Qt5项目:提示error:’setCodecForTr’ is not a member of ‘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的拷贝构造函数时私有的,当把其子类放入容器时无法完成构造其副本.

解决方案:

使用指针,将自定义的子类以指针的形式保存在容器中.比如:QList<MyObject *>list.

5 qt5.x转为Qt4.8问题error:QtWidget/QAction:No such file or directory

解决方法:将QtWidget换成QtGui

6 qt5.x转为Qt4.8问题error:’class QHeader View’ has no member named ‘setSectionResizeMode’

解决方法:是因为TableView之中的问题,在Qt5之后讲setResizeMode改成了setSectionResizeMode所以将section去掉即可

7 qt5.x转为Qt4.8问题error:’itoa’ was not declared in this scope

解决方法:itoa并非标准类库,将其换成sprintf(tmp,”%d”,i+1);用sprintf即可.

8 qt5.x转为Qt4.8问题error:’QStingLiteral’ was not declared in this scope

解决方法:问题出在TCPServerWindow->setObjectName(QStringLiteral(“TCPServerWindow”));这句话QT 4.8 setObjectName 没有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

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值