Qt4.8升级Qt5.9版本问题总结

2023-11-07

最好先在.pro文件中加上 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
建议最好和源码对比看着升级,有些问题不看源码,报出来的问题会误导我们。

1、106: error: 'class QString' has no member named 'toAscii'
     qDebug() << sql.toAscii().data();
解决:用toLatin1或者qPrintable()替换

2、507: error: 'fromAscii' is not a member of 'QString'
         fireAlarm.address = QString::fromAscii(secondCode.toHex().data(), secondCode.toHex().size());
                             ^                             
3、-1: In member function 'void CGraphicsItem::rotate(qreal, QPointF)':
832: error: 'translate' was not declared in this scope
     translate(dx, dy);
     或者
   282: error: 'class CGraphicsItem' has no member named 'translate'
   item->translate(point.x(), point.y());

 更改为:item->tranform().translate(point.x(), point.y());可以编译通过,起不起作用还不清楚

Qt5:代码说明

#if QT_DEPRECATED_SINCE(5, 0)
    QT_DEPRECATED inline void rotate(qreal angle) { setTransform(QTransform().rotate(angle), true); }
    QT_DEPRECATED inline void scale(qreal sx, qreal sy) { setTransform(QTransform::fromScale(sx, sy), true); }
    QT_DEPRECATED inline void shear(qreal sh, qreal sv) { setTransform(QTransform().shear(sh, sv), true); }
    QT_DEPRECATED inline void translate(qreal dx, qreal dy) { setTransform(QTransform::fromTranslate(dx, dy), true); }
#endif

4、833: error: 'rotate' is not a member of 'QGraphicsItem'
     QGraphicsItem::rotate(angle); 解决办法同上
     
5、952: error: no matching function for call to 'CGraphicsScene::itemAt(QPointF)'
         QGraphicsItem* item = this->itemAt(event->scenePos());
    查找itemAt()函数的定义,QT5中其定义为QGraphicsItem * QGraphicsScene::itemAt(const QPointF & position, const QTransform & deviceTransform) const,注意其定义与QT4不一样。 
Qt4:
    QGraphicsItem *itemAt(const QPointF &pos) const; // ### obsolete
    QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const;
Qt5:
    #if QT_DEPRECATED_SINCE(5, 0)
        QT_DEPRECATED inline QGraphicsItem *itemAt(const QPointF &position) const {
            QList<QGraphicsItem *> itemsAtPoint = items(position);
            return itemsAtPoint.isEmpty() ? Q_NULLPTR : itemsAtPoint.first();
        }
    #endif
        QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const;    ^
更改为如下:
    QTransform transform;
    QGraphicsItem *item = scene()->itemAt(scenePos,transform);

6、152: error: invalid use of incomplete type 'const class QMimeData'
     if (event->mimeData()->hasFormat("device/ts-device")
    添加QMimeData的头文件
 
 7、9: error: expected class-name before '{' token
 {
 意思是找不到相关类
 ^添加对应类的头文件
 
 8、55: error: invalid conversion from 'WId {aka unsigned int}' to 'HWND {aka HWND__*}' [-fpermissive]
         
    原码:
    SetWindowLong(winId(), GWL_EXSTYLE, GetWindowLong(winId(), GWL_EXSTYLE) |
                      WS_EX_TRANSPARENT | WS_EX_LAYERED);
    加(HWND)强转后:
    SetWindowLong((HWND)winId(), GWL_EXSTYLE, GetWindowLong((HWND)winId(), GWL_EXSTYLE) |
       WS_EX_TRANSPARENT | WS_EX_LAYERED);
                                                 
9、:-1: error: error: CreateProcess: No such file or directory    
    执行qmake重新编译即可
    
10、4: error: QtGui/QPushButton: No such file or directory
    原:#include <QtGui/QApplication>
    改为:#include <QApplication>
11、156: error: 'UnicodeUTF8' is not a member of 'QApplication'
    原因是:QCoreApplication::UnicodeUTF8已被弃用
    删掉  dlgUserInfo->setWindowTitle(QApplication::translate("dlgUserInfo", "Dialog", 0, QApplication::UnicodeUTF8));中的QApplication::UnicodeUTF8项即可       
12、10: error: 'class QHeaderView' has no member named 'setResizeMode'
     horizontalHeader()->setResizeMode(QHeaderView::Interactive);
     替换 setResizeMode 方法为 setSectionResizeMode
13、142: error: 'qInstallMsgHandler' was not declared in this scope
         qInstallMsgHandler(ConsoleDebugMessageOutput);
         This method is deprecated, use qInstallMessageHandler instead.
14、52: error: variable 'QDataStream write' has initializer but incomplete type
     QDataStream write(&ByteData, QIODevice::WriteOnly);
                      ^                        ^
    在头文件正确的情况下,如果还是有下划线报错,那就应该是缺少模块,需要加上例如:QT += printsupport   

15、 359: error: too few arguments to function 'QTextStream& reset(QTextStream&)'
     reset();
     这个问题就需要看源码里的rest是调用的谁的,为什么出问题。只看这个错误信息是会误导我们的,这个问题实际是
     Qt5 QAbstractItemModel 已经弃用了rest()方法。
     其实在Qt4的rest()方法说明中就已经提到了相关的建议:
     Note: Use beginResetModel() and endResetModel() instead whenever possible. Use this method only if there is no way to call beginResetModel() before invalidating the model. Otherwise it could lead to unexpected behaviour, especially when used with proxy models.
     使用下面两句代替
    QAbstractItemModel::beginResetModel();
    QAbstractItemModel::endResetModel();
15、127: error: reference to 'u16string' is ambiguous
   signed8_t AddUnicodeString(const u16string& newdata, XlsUnicodeStringFormat_t fmt /* = LEN2_FLAGS_UNICODE */ );

u16string同库中的类型同名,混淆出错,更改自己代码里的名字即可

16、4: error: QPlastiqueStyle: No such file or directory     
QPlastiqueStyle已被弃用
我的代码用到的比较简单只是实现了一个虚函数pixelMetric,所以我用QProxyStyle来替换可以编译通过不知道效果怎么样。
参考链接:

http://en.findeen.com/qplastiquestyle_qt5.html 
https://stackoverflow.com/questions/29446642/qt-qplastiquestyle-does-not-name-a-type        
17、485: error: 'QVariant::QVariant(Qt::GlobalColor)' is private
     QVariant(Qt::GlobalColor) Q_DECL_EQ_DELETE;
     解决:QColor(Qt::red) instead of QVariant v = Qt::red
    https://blog.csdn.net/jb11lzy/article/details/48243147
    https://stackoverflow.com/questions/15008297/qvariantqvariantqtglobalcolor-is-private/15008425#15008425
18、11: error: QWindowsStyle: No such file or directory
  Qt5已弃用QWindowsStyle
  窗体风格类 QWindowsStyle 移除了,
使用 QCommonStyle 代替。

19、24: error: ambiguating new declaration of 'int callbackClientEvent(int, int, const char*, int)'
 int __stdcall callbackClientEvent(int TxSocket, int nMsgType, const char *pByteData, int nLen)

解决办法:在声名中同样添加 __stdcall

关于 __stdcall的链接:

https://blog.csdn.net/feixiang_song/article/details/23938745 

http://bbs.chinaunix.net/thread-4116400-1-1.html

关于 Qt4升级Qt5的相关可参考链接:

https://blog.csdn.net/qq61394323/article/details/45692889
http://bbs.qter.org/forum.php?mod=viewthread&tid=903
https://www.cnblogs.com/lzyuse/p/10438958.html

https://blog.csdn.net/qq_25800311/article/details/79451101

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt4.8升级Qt5.9版本问题总结 的相关文章

  • ReactDOM.render(...) 渲染方法

    React代码的书写格式和以前的JS有很大的不同 下面通过对这段代码进行分析了解一下他 以前使用Javascript定义一个变量用var ES6加入了const关键字 用来定义一个常量 const div document createEl
  • 【Kotlin】快速理解协程与挂起

    本文不介绍协程和挂起的基础用法 如需要请移步其他博客 本文主要讲解 kotlin中的协程是什么 协程的作用 挂起是什么 挂起的作用 本文全程尽量白话 使得协程和挂起理解起来更容易 小故事or小事故 之前面试的时候 有个面试官问了我一个问题
  • 语义分割任务中的Transformer

    文章目录 语义分割中的Transformer 1 Patch based Transformer 1 1 SETR 1 2 Segformer 2 Query Based Transformer 2 1 Transformer with O
  • vscode更新时报错怎么办?

    请用管理员权限 打开试试
  • vue2组件系列:Slider 滑块

    我所接触到的Slider滑块应用的场景 主要有图片的放大缩小 调节声音的大小 不知道小伙伴们的应用场景都有哪些呢 欢迎在文章下方留言讨论哈 准备工作 创建一个页面 Slider vue在router js里配置 Slider页面的路由 pa
  • js实现文字上下滚动(到底回到顶部重复滚动)

    直接贴代码 div class scroll ul li 开始 li li 用户 li ul div
  • mybatis传参1 - 传入map类型的参数

    本章将介绍mybatis如何传入参数 传入map类型的参数 我们需要定义如下三部分 目录 1 接口部分 2 mapper文件部分 3 测试类部分 4 测试本次结果 4 1跑出来的值 4 2mysql值 1 接口部分 定义一个接口返回User
  • 【轩说Java】JavaSE知识点难点汇总

    文章目录 JAVA SE 抽象类与其实现子类 抽象类与其子类如下 静态函数不存在重写和多态的概念 重写的要求 接口interface 类 接口的实现 一对多 接口 接口的继承 一对多 接口中的变量和函数 接口作为一种标签 堆 栈 静态方法区
  • Flask-SQLALchemy 连接数据库

    Flask SQLALchemy 连接数据库 在 Flask Web 框架中 Flask SQLALchemy 扩展对数据库操作进行了封装 使用 Flask SQLALchemy 可以通过 Python 对象来操作数据库 一 Flask S
  • Kubernetes集群配置免费的泛域名证书支持https

    前言 kubernetes 集群默认安装的证书是自签发证书 浏览器访问会发出安全提醒 本文记录了利用 dnspod cert manager let s encrytp 等开源组件 实现泛域名证书的自动生成 续期管理 为现有kubernet
  • [转]:Javascript+xmlhttp调用Webservice

    原文地址 http netboy cnblogs com archive 2006 02 18 333260 html 1 创建webservice 为了免于落俗我稍稍修改了创建webserice的默认webmethod using Sys
  • Python 30天: 第一天 -- 简介

    第二天 gt gt 第一天 欢迎观看python30天 介绍 Python 是一种用于通用编程的高级编程语言 它是一种开源 解释型 面向对象的编程语言 Python 是由荷兰程序员 Guido van Rossum 创建的 Python 编
  • Redis之String类型

    文章目录 Redis之String类型 1 赋值 获取值 2 同时设置 获取多个键值 3 数值增减 4 获取字符串长度 5 向尾部追加值 6 分布式锁 7 应用场景 Redis之String类型 Redis命令不区分大小写 1 赋值 获取值
  • 测试基础-系统测试包括哪些内容

    一 系统测试包含哪些测试 1 测试范围 整个系统 功能 性能 安全 界面 兼容等等 2 测试方法 黑盒测试 3 测试依据 需求规格说明书 SRS 4 评估基准 需求覆盖 5 测试类型 测试策略 补充说明 实例 淘宝登录操作 10万用户操作
  • 腾讯架构师谈技术管理:十年沉浮,最后我选择了离开……

    转自 http www techug com post tencent architect talk about team managment html 作者介绍 韩伟 腾讯科技互娱研发部架构师 曾在网易任职8年 担任无线事业部产品总监 多
  • lwip协议栈创建web服务器,基于LWIP的WEB服务器的研究与实现

    摘要 随着嵌入式系统的蓬勃发展 嵌入式技术已经被用于家庭 工业设备 军事等各个领域 同时Internet技术的日趋成熟 让各种嵌入式设备共享互联网的资源 将信息快速的传递到世界的另一端变得越来越紧迫 因此将嵌入式设备与Internet技术的
  • 单变量线性回归实现波士顿房价预测

    1 预测过程 1 波士顿地区房价数据获取 数据来自于sklearn自带数据集 2 波士顿地区房价数据分割 3 训练与测试数据标准化处理 4 使用最简单的线性回归模型LinearRegression对房价进行预测 2 回归算法的评价指标有MS
  • python基础教程:Python基于递归算法实现的走迷宫问题

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 本文实例讲述了Python基于递归算法实现的走迷宫问题 分享给大家供大家参考 具体如下 什么是递归 简单地理解就是函数调用自身的过程就称之为递归 什么时候用到递归 如果一个
  • 以太网帧、IP数据报的图解格式(包含相关例题讲解,一题足够)

    目录 一 基础知识 1 1 UDP段 IP数据报 以太网帧图示 1 2 以太网帧图示 1 3 IP数据报图示 二 例题讲解 1 1 题目及答案 1 2 答案解析 一 基础知识 1 1 UDP段 IP数据报 以太网帧图示 通信过程中 每层协议

随机推荐

  • git ssh key生成

    01 什么是Github和Git GitHub是一个面向开源及私有软件项目的托管平台 因为只支持git 作为唯一的版本库格式进行托管 故名GitHub 我们可以在github上建立一个网上的仓库 可以把代码提交到网上 让别人也可以看到我们的
  • KeyError: Spider not found 5种出错的情况

    KeyError Spider not found name一样 为何还是找不到spider 呢 往下看看 总有一个是你要的答案 第一种 最简单的错误 运行的爬虫名字与爬虫文件中的name不相同 解决方案 令两者名字相同即可 当然90 的人
  • 【React】中渲染列表、添加点击事件

    渲染列表 例如有如下数组 11 22 33 在react中可以用数组的map方法 import React Component from react export default class App extends Component co
  • 购物单

    题目如下 小明刚刚找到工作 老板人很好 只是老板夫人很爱购物 老板忙的时候经常让小明帮忙到商场代为购物 小明很厌烦 但又不好推辞 这不 XX大促销又来了 老板夫人开出了长长的购物单 都是有打折优惠的 小明也有个怪癖 不到万不得已 从不刷卡
  • linux报错:cannot create temp file for here-document: No space left on device

    文章目录 1 问题描述 2 问题定位 3 解决方案 1 问题描述 linux系统中使用cd命令进入某目录时 像往日一样利用tab键进行文件名的补全 结果报如下错误 cannot create temp file for here docum
  • 服务器接硬盘的那个叫什么名字,服务器硬盘接口和普通硬盘接口区别是什么?...

    服务器英文名称为Server 是计算机的一种 是网络中为客户端计算机提供各种服务的高性能的计算机 那么本篇就说说服务器硬盘接口和普通硬盘接口的区别 服务器硬盘接口包括SATA接口 SCSI接口 SAS接口 光纤接口4种 由于固态硬盘价格贵
  • Zxing和QR CODE 生成与解析二维码实例(普通篇)

    首先下载对应的jar包 本实例用的是Zxing2 2jar 下载地址 http download csdn net detail gao36951 8161861 Zxing是Google提供的关于条码 一维码 二维码 的解析工具 提供了二
  • Linux查找文件和目录,重定向输出 ,系统默认运行级别的查看和设置理论和练习

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 一 Linux 二 查找文件和目录 1 查
  • Windows Server 2012 R2 -webDAV管理(VMware workstation环境)

    安装URL及webDAV组件 启动设置webDAV 身份验证 客户端设置 连接测试
  • DNS缓存病毒防护43.227.220

    DNS缓存病毒又称DNS欺骗 是一种通过查找并利用DNS系统中存在的漏洞 将流量从合法服务器引导至虚假服务器上的攻击方式 在实际的DNS解析过程中 用户请求某个网站 浏览器首先会查找本机中的DNS缓存 如果DNS缓存中记录了该网站和IP的映
  • Onetab快速删除所有历史网页

    1 打开网页的控制台 F12 2 控制台粘贴该命令 document querySelectorAll div deleteAllButton forEach function ele index list ele click 3 然后按住
  • 我的CSDN三周年创作纪念日

    机缘 和老王研究读取和处理FY 4A AGRI数据 研究怎么生成经纬度查找图像 怎么处理 后来有了结果 就想着要不发到CSDN上 分享给大家 也能收获几个粉丝 收获 这个过程更多的是一种收获感和幸福感吧 收获了18w 的阅读和400多个粉丝
  • Java设计模式-单例模式

    JAVA设计模式课堂整理 代码都是maven引入junit包 pom文件
  • C++57个入门知识点_57 异常处理(为了程序健壮性,使用try{}catch(){}将代码包裹,出现异常时可以被程序接到,而不会造成程序阻塞或崩溃;需要在VS中打开设置;exception类)

    本篇作为C 基础知识的最后一篇 介绍如何进行代码中的异常处理 我们在写代码的过程中 不得不考虑一些突发的情况 比如说申请内存时内存不够用了 做除法时除数为0 这些都是在运行的时候才会出现的 这时候就需要考虑在运行时出现这些情况应该怎么处理
  • Spring AOP +自定义注解 + Spel表达式 实现审计日志

    1 简介 审计日记就是记录用户的操作记录 基于AOP动态代理 实现自定义审计日志注解 并支持Spel表达式解析 2 实现 2 1 日志存储实体类 Data Builder ToString public class AuditingLog
  • Elasticsearch架构原理

    架构原理 本书作为 Elastic Stack 指南 关注于 Elasticsearch 在日志和数据分析场景的应用 并不打算对底层的 Lucene 原理或者 Java 编程做详细的介绍 但是 Elasticsearch 层面上的一些架构设
  • JS对象其中两个Math对象和日期对象

    JavaScript对象 一 Math对象 1 Math对象的使用 Math对象用来对数字进行与数字相关的计算 该对象 不是构造函数 不需要实例化对象 可以直接使用其静态属性和静态方法 Math对象的常用属性和方法 成员 作用 PI 获取圆
  • Geant4程序的一点技巧总结 2

    4 关于获得粒子状态 获得粒子的总能量 G4Track pTrack pStep gt GetTrack const G4DynamicParticle pParticle pTrack gt GetDynamicParticle pPar
  • 7.设备驱动开发的基本函数

    7 1 I O口函数 无论驱动程序多么复杂 归根结底 无非还是向某个端口或者某个寄存器位赋值 这个值只能是0或1 接收值的就是I O口 与中断和内存不同 使用一个没有 申请的I O端口不会使处理器产生异常 也就不会导致诸如 segmenta
  • Qt4.8升级Qt5.9版本问题总结

    最好先在 pro文件中加上 greaterThan QT MAJOR VERSION 4 QT widgets建议最好和源码对比看着升级 有些问题不看源码 报出来的问题会误导我们 1 106 error class QString has