QT4与QT5兼容问题

news2024/11/27 8:30:55

QT4 与QT5 兼容,源码差异部分通过QT_VERSION 宏来区分

常见区别

  1. widgets prinsupport charts 等模块一如方式,Qt5 将QtWidgets QtPrintsupport 模块从QtGui 中分离出来,QT4 中没有qjson4 和 charts 模块,需要特殊处理
    在pro文件中,按需添加如下内容。
QT += core gui

greaterThan(QT_MAJOR_VERSION,4{
#根据需要引入QT5的widgets printsupport charts 模块

QT +=  widgets  widgets  widgets 
QT += uitools
win32: QT += axcontainer
}
else{
#根据需要在QT4引入qjson4 和 charts模块
INCLUDEPATH += $$(SMART_HOME)/dev/include/qjson4/ $$(QTDIR)/include/
$$(QTDIR)/include/QtCharts/
LIBS += -lqjson4 -lQtCharts
CONFIG += uitools
win32: CONFIG += qaxcontainer
}
DEPENDPATH += $$INCLUDEPATH

QT += core widgets 改 QT += core gui
QT += uitools 改为 CONFIG += uitools
QT += axcontainer 改为 CONFIG += qaxcontainer

如果链接时出现一下错误
在这里插入图片描述
在.pro文件中还需添加

win32{
	LIBS += -lFT_ET99_API -lET_OTPVerify -lZAZAPIt
}
else{
	LIBS += -lFT_ET99 -letotpverify -lzazlibPC64
}

在源代码中根据QT_VERSION 宏区分QT版本
#if QT_VERSION > 0x050000 //qt5.0以上的版本
#include
#endif
#include …

插件接口定义区别

class DONUT_CHART_PLUGIN_LIB_EXPORY CDonutChartPlugin : public QObject , public PluginWidgetFactoryInterface
{
	Q_OBJECT
	#if QT_VERSION  > 0x050000
	Q_PLUGIN_METADATA(IID PluginWidgetFactoryInterface_iid)
	Q_INTERFACES(PluginWidgetFactoryInterface)
}

在cpp文件末尾添加如下内容

#if QT_VERSION  《 0x050000
Q_PLUGIN_EXPORT2(donutchartwidget,CDonutChartPlugin)
#endif

其中CDonutChartPlugin为接口实现类的名称,donutchartwidget 与pro文件中的target变量一致,即插件so包的名称

枚举类型常量写法,去掉美剧类型名

Qt::Orientation::Vertical 改为 Qt::Vertical
Qt::Variant::Tpye::Int   改为 Qt::Variant::Int

容器套容器 右边尖括号增加空格

QMap<long,QVecor<double> >  tmp; 

其他问题

QComBox 的currentData()函数,QT4中无此函数
int cur = ui.combox->currentData().toInt();
改为
int cur = ui.combox->itemData( ui.combox->currentIndex().toInt());

没有setCurrentText()函数
改为setCurrentIndex(combx->findText(txt));

QCompleter 没有setFilterMode 函数
改为

#if QT_VERSION  > 0x050000
 pCompleter.setFilterMode();
#endif

QHeader 区别处理
setClickable ⇒ setSectionsClickable(true)

void mouseDoubleClickEvent() Q_DECL_OVERRIDE
去掉Q_DECL_OVERRIDE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringSecurity之基础认知

前言 之前一直说开一个SpringSecurity的专栏&#xff0c;今天抽空整理一下&#xff0c;准备开始更新。 也欢迎大家订阅此专栏&#xff01; 什么是SpringSecurity&#xff1f; Spring是非常成功的Java应用框架&#xff0c;目前是非常主流的开发框架。Spring Securtiy正是我们…

RPC 漫谈: 限流问题

RPC 漫谈&#xff1a; 限流问题 微服务之间的 RPC 调用往往会使用到限流功能&#xff0c;但是很多时候我们都是用很简单的限流策略&#xff0c;亦或是工程师拍脑袋定一个限流值。 这篇文章主要讨论在 RPC 限流中&#xff0c;当前存在的问题和可能的解决思路。 为什么需要限流…

Tailwind CSS 小案例,创建漂亮的收藏卡片列表

作为人类&#xff0c;我们有一种天生的倾向&#xff0c;喜欢收集不同的物品&#xff0c;并根据兴趣将它们分组。从邮票到书籍&#xff0c;人们收集和分组的物品种类繁多。定义上&#xff0c;收藏是一组事物&#xff0c;通常是由某个人创建的。例如&#xff0c;很多孩子会收集漫…

Docker In Docker

Docker in Docker 适用场景 ​ 在 CI 中&#xff0c;通常会有一个 CI Engine 负责解析流程&#xff0c;控制整个构建过程&#xff0c;而将真正的构建交给 Agent 去完成。例如&#xff0c;Jenkins 、GitLab 均是如此 同时 Agent 是动态的&#xff0c;构建时才需要&#xff0c;…

查询淘宝商品历史价格(用Python记录商品每天价格变化)

taobao.item_history_price-获取淘宝天猫历史价格接口 思路&#xff1a; 第一步抓取商品的价格存入 Python 自带的 SQLite 数据库每天定时抓取商品价格使用 pyecharts 模块绘制价格折线图&#xff0c;让低价一目了然 接口说明&#xff1a;通过接口可以拿到整个平台&#xff0…

Tomcat源码:Container接口

参考资料&#xff1a; 《Tomcat - Request请求处理: Container设计》 《Tomcat - Container容器之Engine&#xff1a;StandardEngine》 前文&#xff1a; 《Tomcat源码&#xff1a;启动类Bootstrap与Catalina的加载》 《Tomcat源码&#xff1a;容器的生命周期管理与事件监…

matplotlib绘图看这篇就够了

导入matplotlib第三方库此外&#xff0c;在matplotlib中我们可以只输入y轴&#xff0c;即为只输入一个数组我们也可以输出&#xff0c;x不为必要条件。而且也可以使用plt.xticks()函数进行设置x轴的label。import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [Si…

注意力机制中Q和K相乘的意义是什么?为什么Q和K相乘就可以得到它们之间的相似性/权重矩阵呢?

为什么query和key相乘就能得到学生和教师的相似度呢&#xff1f;它的内部原理是什么? 在注意力机制中&#xff0c;query 和 key 相乘得到的相似度其实是通过计算两个向量之间的点积来实现的。具体而言&#xff0c;我们将 query 和 key 进行点积运算后【这里的点积运算可以看作…

从C出发 23 --- 函数专题练习

A&#xff1a;我们可以将 main 理解为操作系统调用的函数&#xff0c;操作系统运行一个应用程序时&#xff0c;就去调用这个应用程序里面的main函数 B: 函数中只能定义变量&#xff0c;定义的变量叫局部变量 C: 从操作系统的角度来看 C 并不一定正确&#xff0c;因为从技术角…

Cadence OrCAD Capture 层次化电路设计展开的方法

&#x1f3e1;《总目录》   &#x1f3e1;《宝典目录》   &#x1f3e1;《上级目录》 目录1&#xff0c;概述2&#xff0c;展开方法3&#xff0c;总结B站关注“硬小二”浏览更多演示视频 1&#xff0c;概述 典型的层次化设计是指顶层模块中&#xff0c;调用1个电路模块超过…

Java中的并发容器

Java 中的 并发容器 1.List 类 list类 线程安全的主要有 Vector 与 CopyOnWriteArrayList a). Vector Vector 相当于在 原有 ArrayList类的基础上将所有方法 变成同步方法 同样的操作还有 Collections.synchronizedList&#xff08;&#xff09; 方法&#xff0c;将原有Lis…

自训练Self-Training学习总结

一、自训练&#xff08;Self-training&#xff09; Self-training是最简单的半监督方法之一&#xff0c;其主要思想是找到一种方法&#xff0c;用未标记的数据集来扩充已标记的数据集。算法流程如下&#xff1a; 首先&#xff0c;利用已标记的数据来训练一个好的模型&#xf…

ch04-损失优化

ch04-损失优化0.引言1.权值初始化1.1. 梯度消失与爆炸1.2. Xavier 初始化1.3. Kaiming 初始化1.4. 常用的权值始化方法1.5. nn.init.calculate_gain1.6. 总结2.损失函数 (一)2.1. 损失函数的概念2.2. 交叉熵损失函数 nn.CrossEntropyLoss2.3. NLL/BCE/BCEWithLogits Loss2.4. 总…

什么原因导致了儿童自闭症?跟父母养育有关吗?

导致儿童自闭症的原因是什么&#xff1f;这和父母的抚养有关吗&#xff1f;学习教育孩子的方法&#xff0c;让孩子快乐健康地成长&#xff0c;是家庭和孩子生活中的一件重要事情。不良的环境和错误的教育会导致儿童自闭症&#xff0c;这是真的吗&#xff1f;自闭症&#xff0c;…

1、vscode搭建C++开发环境及一些配置文件的含义

文章目录一、vscode搭建开发环境1、下载和配置MinGW-w64 编译器套件2、安装到电脑中3、配置环境变量4、测试是否安装成功5、vscode上安装C/C插件二 、配置编译环境时各个文件的含义1、task.json&#xff1a;此文件告诉VS代码如何构建&#xff08;编译&#xff09;程序&#xff…

如何利用 IP 归属地查询 API 精准锁定用户位置

引言 在互联网时代&#xff0c;IP 地址扮演着非常重要的角色&#xff0c;它可以帮助我们追踪网站访问者、优化网络服务等等。而 IP 归属地则更进一步&#xff0c;它可以帮助我们精确地定位 IP 地址所在的地理位置&#xff0c;为数据分析、网络安全、市场调研等领域提供了极大的…

「业务架构」需求工程——需求验证(第4部分)

确保规定要求满足客户需求的过程。需求验证它是一个确保特定需求满足客户需求的过程。它关心的是找到需求中的问题。当这些问题在后期发现时&#xff0c;或者在系统投入使用后&#xff0c;这些问题会导致大量的返工成本。通过系统变更来修复需求问题的成本通常比修复设计或代码…

如何选择 O2OA (翱途) 开发平台的部署架构?

O2OA (翱途) 开发平台 [下称 O2OA 开发平台或者 O2OA] 支持公有云&#xff0c;私有云和混合云部署&#xff0c;也支持复杂的网络结构下的分布式部署。本篇主要介绍 O2OA (翱途) 开发平台支持的部署环境以及常用的集群部署架构。 软硬件环境说明 支持的云化平台&#xff1a; …

微信小程序-组件化

微信小程序-组件化 自定义组件 业务描述&#xff1a;代码中有多处需要引用同一段代码&#xff0c;需要把他封装成一个组件 流程 在根目录创建components用于存放通用组件在创建组件文件夹选择新建components 会自动生成4个文件json文件 会出现"component": true,…

Talk预告 | 浙江大学乔硕斐:语言模型提示推理综述

本期为TechBeat人工智能社区第480期线上Talk&#xff01; 北京时间3月9日(周四)20:00&#xff0c;浙江大学计算机科学与技术硕士——乔硕斐的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “语言模型提示推理综述 ”&#xff0c;届时将分享对语言…