Qt5兼容使用之前Qt4接口 intersect接口

这篇具有很好参考价值的文章主要介绍了Qt5兼容使用之前Qt4接口 intersect接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 问题

项目卡中遇到编译报错, 错误 C2039 “intersect”: 不是“QRect”的成员 。
Qt5兼容使用之前Qt4接口 intersect接口,Qt,qt,开发语言,兼容qt4

2. 排查过程

排查到依赖的第三方代码,使用 intersect 接口, 跟踪排查到头文件中使用了***#if QT_DEPRECATED_SINCE(5, 0)***

#if QT_DEPRECATED_SINCE(5, 0)
    Q_REQUIRED_RESULT QT_DEPRECATED QRect unite(const QRect &r) const Q_DECL_NOTHROW { return united(r); }
    Q_REQUIRED_RESULT QT_DEPRECATED QRect intersect(const QRect &r) const Q_DECL_NOTHROW { return intersected(r); }
#endif

    friend Q_DECL_CONSTEXPR inline bool operator==(const QRect &, const QRect &) Q_DECL_NOTHROW;
    friend Q_DECL_CONSTEXPR inline bool operator!=(const QRect &, const QRect &) Q_DECL_NOTHROW;

#if QT_DEPRECATED_SINCE(5, 0) 表示qt 5.0版本已经弃用这个接口,这个问题 就是使用弃用的版本接口,那么问题就排查到了,库使用了qt4的接口,我们QT编译版本是Qt5.15, 上面显示Qt5.0以后就弃用了。

3. 解决

那我们就要解决Qt版版接口兼容问题了。下面有个方法:

  • 方法一: 一般情况下弃用某个接口,会相应的有替代接口,经过查找手册这个代码附近就有这样的接口 QRect::intersected 一样的功能,可以更改源码将intersect 改为intersected解决
  • 方法二: 很多情况下,我们没办法修改源码,或者修改工作量太大等原因。就需要做接口兼容了, qt有这样的一个宏QT_DISABLE_DEPRECATED_BEFORE,宏允许你指定你的代码所支持的 Qt 最低版本 查看手册了解具体解释和使用方法

Qt5兼容使用之前Qt4接口 intersect接口,Qt,qt,开发语言,兼容qt4

QT_DISABLE_DEPRECATED_BEFORE=0x050100 支持Qt5.1, 那我们要支持Qt4 可以限定
在pro文件中添加

DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x040900  //支持使用最低4.9版本接口

我这里使用cmake编译,在CMakeLists.txt中添加:

ADD_DEFINITIONS("-DQT_DISABLE_DEPRECATED_BEFORE=0x040900")

4.拓展

至此这问题就解决了,第二个方法就比较通用了。

DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x040900 //支持qt4.9
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050000 //支持qt5.0
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050F00  //支持qt5.15
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000  //支持qt6.0

我们用这个宏就可以做一些事情了,比如多个开发团队统一代码版本,升级代码等工作了。文章来源地址https://www.toymoban.com/news/detail-639808.html

到了这里,关于Qt5兼容使用之前Qt4接口 intersect接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计项目——基于QT4+Opencv开发的道路偏移检测与预警系统

    完整项目地址:https://download.csdn.net/download/lijunhcn/88453342 基于QT4+Opencv的道路道路偏移检测与预警系统 开发环境:Ubuntu14.04+QT4.8.5+Opencv2.4.8 已经实现的功能: 道路偏移检测 道路偏移预警 串口读取外部传感器数据 部分源码展示:

    2024年02月03日
    浏览(42)
  • qt中使用QGIS实现二次开发导入shp格式地图(MSVC2019_64bit+qt5.15+qgis)

    在qt开发过程中可能要导入自定义格式的图层地图,那么可以把这些数据导入qgis然后导出为shp格式文件,然后下载qgis源码,在qt项目中配置环境变量导入qgis有关的头文件,然后再引入shp数据格式的地图。 QGIS安装 QGIS安装 QGIS导入数据 然后保存点击Layer-save as导出为shp格式文件

    2024年02月05日
    浏览(51)
  • Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

    1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA SDK Android SDK Android NDK 其中Android NDK直接下载的压缩包,解压即可。 Android SDK提供了安装包和压缩包,用哪个都行。 Qt For Android开发环境的搭建说简单也简单,说复杂也比较复杂。说它简单是因为安装的软件就一两个,安

    2024年02月02日
    浏览(49)
  • Qt开发笔记(Qt5.9.9下载安装环境搭建win10)

    #1 Qt下载网站(国内、国外镜像) #2 Qt5.9.9安装选项 #3 配置系统环境变量 #4 创建测试项目 #1 Qt下载网站(国内、国外镜像) 官方下载地址(慢):http://download.qt.io/ 国内镜像网站 这里给大家推荐几个国内著名的 Qt 镜像网站,主要是各个高校的: 中国科学技术大学:http://mi

    2024年02月15日
    浏览(48)
  • Qt5开发及实例V2.0-第七章-Qt图形视图框架

    7.1.1 Graphics View的特点 Graphics View框架结构的主要特点如下。 (1)Graphics View框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。 (2)Graphics View支持事件传播体系结构,可以使图元在场景(scene)中的交互能力提高1倍,图元能够处理键盘事件和鼠标事

    2024年02月07日
    浏览(48)
  • Qt5开发及实例V2.0-第四章Qt基本对话框

    首先介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox),运行效果如图4.1所示。 按如图4.1所示依次执行如下操作。 (1)单击“文件标准对话框实例”按钮,弹出“文

    2024年02月07日
    浏览(104)
  • YOLOv5+QT5界面应用开发

    YOLOv5+QT5的UI界面开发 最终界面图: 本文章基于python3.7的Annaconda中虚拟环境开发: 1.1 配置YOLOv5环境 https://github.com/ultralytics/yolov5 下载yolov5程序后,虚拟环境下运行: activate v5 pip install -r requirements.txt 1.2 配置QT环境 pip install pyqt5 pyqt5-tools 使用pyqt5自带的图形界面设计工具:de

    2023年04月19日
    浏览(41)
  • 基于Qt5的图像交互控件开发(C++实现)

    博主近期看到海康VM、halcon以及visionpro视觉软件都包含一个图像智能交互控件,然后近期根据其中的技术原理,也基于Qt5仿照开发了一个类似的功能,包含矩形、旋转矩形、任意多边形、圆、圆环、扇环,直线卡尺以及圆卡尺等常用控件,图像智能交互是在计算机视觉领域中

    2024年02月05日
    浏览(57)
  • 统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8

      上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。     系统版本:      参考博文《获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)》   

    2024年02月08日
    浏览(52)
  • 嵌入式Linux Qt5 (C++)开发栏目概述

    本栏目开始介绍Linux系统下的Qt C++程序开发,资源是以嵌入式为切入点(现在Linux系统下的Qt C++程序开发好像就是应用于嵌入式),那就跟着一起学习 Linux系统下的Qt C++程序开发知识 ,再扩展一下 嵌入式 的知识吧。我这里默认已经 熟悉C++基本语法、熟悉Qt在windows下的使用方

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包