Qt5兼容使用之前Qt4接口 intersect接口
1. 问题
项目卡中遇到编译报错, 错误 C2039 “intersect”: 不是“QRect”的成员 。

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); }
#endiffriend 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 最低版本 查看手册了解具体解释和使用方法

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
我们用这个宏就可以做一些事情了,比如多个开发团队统一代码版本,升级代码等工作了。
相关文章:
Qt5兼容使用之前Qt4接口 intersect接口
1. 问题 项目卡中遇到编译报错, 错误 C2039 “intersect”: 不是“QRect”的成员 。 2. 排查过程 排查到依赖的第三方代码,使用 intersect 接口, 跟踪排查到头文件中使用了***#if QT_DEPRECATED_SINCE(5, 0)*** #if QT_DEPRECATED_SINCE…...
【云原生】Kubernetes节点亲和性分配 Pod
目录 1 给节点添加标签 2 根据选择节点标签指派 pod 到指定节点[nodeSelector] 3 根据节点名称指派 pod 到指定节点[nodeName] 4 根据 亲和性和反亲和性 指派 pod 到指定节点 5 节点亲和性权重 6 pod 间亲和性和反亲和性及权重 7 污点和容忍度 8 Pod 拓扑分布约束 官方…...
【Essential C++课后练习】纯代码(更新中)
文章目录 第一章 C编程基础1.41.51.61.71.8 第二章 面向过程的编程风格2.12.22.32.42.52.6 第一章 C编程基础 1.4 /*********************************************************************说明:试着扩充这个程序的内容:(1)要求用户同时输…...
C#仿热血江湖GClass
目录 1 C#仿热血江湖GClass 1.1 GClass32 1.2 method_4 1.3 smethod_0 C#仿热血江湖GClass public class GClass32 { private byte[] byte_0;...
[SQL智慧航行者] - 用户购买商品推荐
话不多说, 先看数据表信息. 数据表信息: employee 表, 包含所有员工信息, 每个员工有其对应的 id, salary 和 departmentid. --------------------------------- | id | name | salary | departmentid | --------------------------------- | 1 | Joe | 70000 | 1 …...
Idea配置Scala开发环境
1.首先安装scala插件: File--->Setting---->plugins,在输入框中输入scala,然后点击“Install”即可安装scala,需要稍微等待几分钟。 2 创建项目: File ---->new---->project-----Maven--->Next----输入名称(test…...
LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器
LT8711UXD 1.描述 LT8711UXD是一款高性能的双车道TypeC/DP1.4到HDMI2.0转换器,设计用于将USB Type-C源或DP1.4源连接到HDMI2.0接收器。LT8711UXD集成了一个DP1.4兼容的接收机,和一个HDMI2.0兼容的发射机。此外,还包括两个CC控制器࿰…...
Android APK体积优化(瘦身)
1、基础知识: 1.1 apk结构 lib :存放so文件,对应不同的cpu架构 res :资源文件,layout、drawable等,经过aapt编译 assets :资源文件,不经过aapt编译 classes.dex :dx编译…...
python技术栈 之 单元测试中mock的使用
一、什么是mock? mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 二、mock的作用 特别是开发过程中上下游未完成的工序导致当前无法测试,需要虚拟某些特定对象…...
python 提取冒号和逗号内的字符串
如果你想要从字符串中提取冒号和逗号之间的内容,你可以使用正则表达式来完成。以下是使用 Python 的re模块进行提取的示例: import retext 这是一个包含:冒号,逗号:的字符串# 使用正则表达式匹配冒号和逗号之间的内容 pattern r[:](.*?)[,] matches …...
CentOS安装Postgresql
PG基本安装步骤 安装postgresql: sudo yum install postgresql-server初始化数据库:安装完毕后,需要初始化数据库并创建初始用户: sudo postgresql-setup initdb启动和停止服务: sudo systemctl start postgresql sudo…...
云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器)...
什么是 OpenTelemetry? OpenTelemetry 是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是 OpenCensus 和 OpenTracing 项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。 https://opentelemetry.iohttps://www.cncf.io…...
多用户跨境电商商品库系统快速搭建(全开源)
搭建一个多用户跨境电商商品库系统需要以下步骤: 1. 确定系统需求:首先,需要明确系统的功能需求,包括商品管理、订单管理、用户管理、支付管理等。根据具体需求确定系统的功能和界面设计。 2. 确定技术栈:选择合适的…...
DataGrip 配置 HiveServer2 远程连接访问
文章目录 集群配置 HiveServer2 服务DataGrip 配置 HiveServer2 访问 Hive 集群配置 HiveServer2 服务 1.在 Hive 的配置文件 hive-site.xml 中添加如下参数: <!-- 指定 HiveServer2 运行端口,默认为:10000 --><property><na…...
异常的使用
第一章 异常 1、异常概念 异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是: 异常:指的是程序…...
软件安全测试包含哪些内容和方法?安全测试报告的必要性
软件安全测试是一种通过模拟真实攻击的方式,对软件系统进行全面的安全性评估和测试,以发现潜在的安全漏洞和弱点,是确保软件系统安全性的重要措施。在进行软件安全测试时,我们需要了解测试的内容和方法,以及为什么进行…...
【代码随想录-leetcode第四题 20.有效的括号】
题目描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右…...
造个轮子-任务调度执行小框架-IOC容器实现
文章目录 前言使用场景特性项目结构初始化执行流程可替换核心组件容器创建扫描目标包容器实例BeanDefinitionMap 创建过滤并初始化创建对象依赖注入完整代码前言 忙里偷闲,今天终于是把概率论这块骨头干下来了。所以的话,留了点时间,把整个项目的结构和基本的功能给实现以下…...
npm发包中一些操作备忘
1、npm发布相关命令 发布 npm publish 发布beta版 npm publish --tag beta 取消发布 npm unpublish --force 2、lerna发布相关命令 发布 lerna publish 其他的的官方文档里面比较全 lerna中文文档...
15_基于Flink将pulsar数据写入到ClickHouse
3.8.基于Flink将数据写入到ClickHouse 编写Flink完成数据写入到ClickHouse操作, 后续基于CK完成指标统计操作 3.8.1.ClickHouse基本介绍 ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用…...
TavernAI高级功能探索:自定义设置与API集成的深度教程
TavernAI高级功能探索:自定义设置与API集成的深度教程 【免费下载链接】TavernAI Atmospheric adventure chat for AI language models (KoboldAI, NovelAI, Pygmalion, OpenAI chatgpt, gpt-4) 项目地址: https://gitcode.com/gh_mirrors/ta/TavernAI Taver…...
R 4.5时空数据管道重构清单(23项breaking changes汇总表),错过本周升级将无法兼容CRAN即将下架的5个核心包
第一章:R 4.5时空数据可视化工具概览R 4.5 版本在时空数据分析生态中延续了对地理空间与时间维度协同可视化的深度支持,其核心能力依托于一系列高度集成的包体系。相较于早期版本,R 4.5 对 sf、spatstat、stars 和 tmap 等包的底层依赖进行了…...
模拟IC设计进阶指南:MOS开关电路的非理想特性与优化策略
1. MOS开关电路的非理想特性揭秘 第一次用MOS管做开关电路时,我天真地以为它就是个完美的电子开关——导通时零电阻,关断时完全绝缘。直到在采样保持电路里看到信号波形出现诡异的台阶,才意识到教科书里的理想模型都是"卖家秀"。实…...
复旦微FM33 MCU 底层开发实战——从寄存器到外设精通
1. 初识复旦微FM33系列MCU 第一次拿到复旦微FM33LC0XX开发板时,我和大多数嵌入式开发者一样,习惯性地打开标准外设库开始写代码。但很快发现,当需要实现特定功能或优化性能时,库函数的封装反而成了障碍。这就像开车时只能使用自动…...
s2-pro语音合成5分钟快速上手:零基础小白也能玩转AI配音
s2-pro语音合成5分钟快速上手:零基础小白也能玩转AI配音 1. s2-pro语音合成简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它能让你的文字变成自然流畅的语音。想象一下,你只需要输入一段文字,就能得到一个真人般的声音…...
大数据平台HDP、CDH、CDP的区别
部署一套大数据架构是相当麻烦的事情,各种组件、服务配置相当多而杂,由此诞生了能简化各种服务部署和配置的工具,也就是大数据平台框架。 HDP(Hortonworks Data Platform):Hortonworks 公司推出的 100% 开…...
Hunyuan-MT-7B翻译模型部署问题排查:启动失败、内存不足解决方案
Hunyuan-MT-7B翻译模型部署问题排查:启动失败、内存不足解决方案 1. 问题概述 部署Hunyuan-MT-7B翻译模型时,最常见的两类问题都与资源分配相关: 启动失败:模型加载过程中报错退出内存不足:推理过程中出现OOM&#…...
OpenClaw多模态扩展:千问3.5-9B处理图像与文本混合任务
OpenClaw多模态扩展:千问3.5-9B处理图像与文本混合任务 1. 为什么需要多模态任务处理 在日常工作中,我们经常会遇到需要同时处理图像和文本的场景。比如收到一份包含截图和说明的文档,或是需要从网页截图中提取关键信息。传统的工作流往往需…...
轻量高效的动态指针数组CPtrArray实现
在C开发中,动态管理指针集合是常见需求,今天分享一款轻量、高效的动态指针数组类CPtrArray,其核心作用是统一管理任意类型指针的存储、删除、访问,适配单线程下的各类指针管理场景,代码简洁且实用性强。CPtrArray采用动…...
据传某大厂西安研究所一个女员工,终身合同耗了三年不走,今年被hr带着保安抬出公司了。
点击上方“码农突围”,马上关注 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看”这是【码农突围】的第 494 篇原创分享作者 l 突围的鱼来源 l 码农突围(ID:smarty…...
