Qt之第三方库QCustomPlot使用(二)
Qt开发 系列文章 - qcustomplot(二)
目录
前言
一、Qt开源库
二、QCustomPlot
1.qcustomplot介绍
2.qcustomplot下载
3.qcustomplot移植
4.修改项目文件.pro
5.提升QWidget类
三、技巧讲解
1.拖动缩放功能
2.等待更新
总结
前言
Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用程序功能的控件集合。这些控件库可以提供额外的用户界面元素、功能组件或者优化现有Qt控件的性能和外观。一些常用的Qt第三方控件库有QCustomPlot、QXlsx、QHotkey、QtSerialPort、QsLog等等很多,它们都是开源的、免费的,且基于Qt框架编写,今天本文主要讲解QCustomPlot第三方控件开源库。
Qt官方提供了一套绘图库QCharts,主要用于绘制商业、金融、医疗等领域的数据图表,优点是丰富的图表,较高的美观,支持跨平台,可绘制的图标种类比QCustomPlot多;但是在绘图点数过多,大概在两千个点以上就存在刷新卡顿的问题。
CustomPlot是一款非官方的轻量级绘图库,主要用于绘制科学、工程、统计等领域的数据图表,优点易于使用,较高的性能和灵活性,适合中小型数据可视化,其框架和缓存化的处理使其处理性能大幅度提升,支持十万以上的数据量。
一、Qt开源库
Qt开源库是指基于Qt框架的一系列开源库,这些库提供了丰富的功能,帮助开发者在Qt应用程序中实现各种功能需求。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛用于开发GUI程序,也可用于开发非GUI程序,如控制台工具和服务器。
常用的Qt第三方控件开源库及特点和用途简要描述如下:
- QCustomPlot是一个绘制图表、曲线、统计图等的库,具有灵活的定制化和丰富的功能;
- QXlsx是一个用于读写Microsoft Excel文件的库,使Qt应用程序能够处理Excel数据;
- QHotkey是一个简单易用的库,用于在Qt应用程序中注册全局快捷键;
- QtSerialPort是Qt官方提供的库,用于串口通信,支持跨平台使用;
- QsLog是一个轻量级的日志库,用于在Qt应用程序中记录和输出日志信息;
- QJson是用于JSON数据解析和生成的库,方便处理JSON格式的数据;
- QwtPlot3D是绘制三维图形的库,支持曲面图、线框图、散点图等。
二、QCustomPlot
先提供QCustomPlot库的官方网址:Qt 绘图小部件 QCustomPlot - 简介
1.qcustomplot介绍
根据该库的官方介绍,QCustomPlot是一个用于绘图和数据可视化的Qt C++小部件,该绘图库专注于制作美观、出版质量的2D绘图、图形和图表,支持多种图表类型,如折线图、散点图、柱状图等,具有灵活的配置选项和高效的性能,并为实时可视化应用程序提供高性能。

2.qcustomplot下载
在上面的官网选择下载界面,可以看到最新版本文件,界面上下载的压缩包包括:QCustomPlot.tar.gz、QCustomPlot-sharedlib.tar.gz、QCustomPlot-source.tar.gz这三个下载选项,其中QCustomPlot.tar.gz压缩包包含源码、帮助文档和示例工程,QCustomPlot-sharedlib.tar.gz压缩包包含编译动态库的.pro文件和使用动态库的.pro文件,QCustomPlot-source.tar.gz压缩包仅包含源码。

注意选择最好选择QCustomPlot.tar.gz这个文件下载,里面包含源码、帮助文档和示例工程,既有我们需要的qcustomplot.h和qcustomplot.cpp这两个源文件,又可以查看官方推荐的示例工程,方便我们更好的了解QCustomPlot和使用它。
3.qcustomplot移植
上面下载完后,如下图所示。里面的两个文件夹即为官方示例,有空时大家可以参考,而qcustomplot.h和qcustomplot.cpp文件就是我们所需要要的,将这两个文件添加到你的Qt项目中。


首先,将qcustomplot.h和qcustomplot.cpp文件复制到项目文件夹中。

然后,在Qt Creator中,右键点击项目名,选择“添加现有文件”,选中这两个文件。


4.修改项目文件.pro
如果使用的是Qt5.0及以上版本,需要在项目.pro文件中添加printsupport。代码示例:

5.提升QWidget类
在Qt Designer中,放置一个常规的QWidget,右键点击该QWidget,选择“提升为...”,在“提升的类名”中输入QCustomPlot,然后点击“提升”。这样,QWidget将被转换为QCustomPlot类。


至此,已经将QCustomPlot在Qt中运用的开发环境已经搭建完毕,下面在讲解一些QCustomPlot的使用技巧,也可以参考下官方示例上的使用方式。
三、技巧讲解
1.拖动缩放功能
如果要设置QCustomPlot生成的曲线,可以使用鼠标移动拖动、滚轮缩放、点击选中等功能,只需要添加一段代码。
// 允许用户用鼠标拖动轴范围,以鼠标为中心滚轮缩放,点击选择图形:
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
// 设置鼠标滚轮的缩放倍率,如果不设置默认为0.85,大于1反方向缩放
customPlot->axisRect()->setRangeZoomFactor(0.5);
// 设置鼠标滚轮缩放的轴方向,仅设置垂直轴。垂直轴和水平轴全选使用:Qt::Vertical | Qt::Horizontal
customPlot->axisRect()->setRangeZoom(Qt::Vertical);
2.等待更新
holding...
总结
QCustomPlot库里面还有许多功能,更为详细可参考官方给出的示例工程,在上述讲解中,你下载的文件包中。
博文中相应的工程代码Qt-Case.zip 利用Qt开发软件进行编的例程,为博文提供案例-CSDN文库。
相关文章:
Qt之第三方库QCustomPlot使用(二)
Qt开发 系列文章 - qcustomplot(二) 目录 前言 一、Qt开源库 二、QCustomPlot 1.qcustomplot介绍 2.qcustomplot下载 3.qcustomplot移植 4.修改项目文件.pro 5.提升QWidget类 三、技巧讲解 1.拖动缩放功能 2.等待更新 总结 前言 Qt第三方…...
JAVA-类与继承
啥是继承? 在JAVA中, 继承就是子类继承父类的特征和行为,使得子类拥有父类的特征和行为,同时还可以拥有父类所没有的特征和行为。 举个例子通俗来讲,兔子和羊是食草动物类,狮子和豹子是食肉动物类&#x…...
SSH连接报错,Corrupted MAC on input 解决方法
问题描述 客户在windows CMD中SSH连接失败,报错: Corrupted MAC on input ssh_dispatch_run_fatal: Connection to x.x.x.x port 22: message authentication code incorrect值得注意的是,客户通过别的机器做SSH连接可以成功,使用putty, mo…...
【C++】8___继承
目录 一、基本语法 二、继承方式 三、对象模型 四、继承中的构造与析构的顺序 五、继承中同名成员处理 六、多继承语法 七、菱形继承 一、基本语法 好处:减少重复的代码 语法: class 子类 : 继承方式 父类 子类 也称为 派生类 父类…...
C# 中的异常处理:构建健壮和可靠的程序
C#中的异常处理(Exception Handling)。异常处理是编程中非常重要的一部分,它允许开发者优雅地处理程序运行时可能出现的错误或意外情况。通过有效的异常处理,可以使应用程序更加健壮、可靠,并提供更好的用户体验。以下…...
基于智能合约的医院凭证共享中心路径探析
一、引言 随着医疗行业的不断发展和信息技术的进步,基于智能合约的医疗凭证共享中心解决方案成为了可能。在当今数字化时代,医疗领域面临着诸多挑战,如医疗数据的分散存储、信息共享的不便捷以及凭证管理的复杂性等问题。而智能合约的出现&am…...
vba学习系列(9)--按需求计数单元格数量
系列文章目录 文章目录 系列文章目录前言一、按需求计数单元格数量1.需求 二、使用步骤1.vba源码2.整理后 总结 前言 一、按需求计数单元格数量 1.需求 一个表中有多个类型的单元格内容,比如:文字、数字、特殊字符、字母数字…… 我们要计数字母数字的…...
scale index的计算
scale index定义 基本实现 需要注意,scale index的提出者分别构建了MATLAB和R语言的实现方式。 但是,需要注意,经过我向作者求证。 MATLAB编写的代码已经“过时了”,为了拥抱时代,作者构建了R语言包,名称为…...
鸿蒙实现Web组件开发
目录: 1、简介&使用场景2、加载网络页面3、加载本地页面4、加载HTML格式的文本数据5、设置深色模式6、上传文件7、在新窗口中打开页面8、管理位置权限 1、简介&使用场景 Web是一种基于互联网的技术和资源的网络服务系统。它是指由许多互连的计算机组成的全…...
Linux——linux系统移植
创建VSCode工程 1、将NXP官方的linux内核拷贝到Ubuntu 2、解压缩tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 NXP官方开发板Linux内核编译 1、将.vscode文件夹复制到NXP官网linux工程中,屏蔽一些不需要的文件 2、编译NXP官方EVK开发板对应的Linux系统…...
工业摄像头应对复杂环境的策略与解决方案
工业摄像头需应对复杂环境,如极端温度、振动、尘土、光照不足等。为确保稳定工作,它采用了先进技术和设计。详细分析如下: 一、增强环境适应性 采用高灵敏度传感器:使用CMOS或CCD图像传感器,适应低光照条件。 高精度、…...
重生之我在异世界学编程之C语言:深入动态内存管理篇
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一 动态内存管理的必要性二 动态…...
【经典论文阅读】Latent Diffusion Models(LDM)
Latent Diffusion Models High-Resolution Image Synthesis with Latent Diffusion Models 摘要 动机:在有限的计算资源下进行扩散模型训练,同时保持质量和灵活性 引入跨注意力层,以卷积方式实现对一般条件输入(如文本或边界框…...
智能指针中的weak_ptr(弱引用智能指针)
弱引用智能指针 std::weak_ptr 可以看做是shared_ptr的助手,它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符*和->,因为它不共享指针, 不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数,它的…...
【电子通识】机电继电器和固态继电器的区别
机电继电器 机电继电器于19世纪中叶发明。这些器件将线圈与可移动的金属触点结合使用来充当电动开关。这些器件会因为金属触点出现磨损而发生故障,例如焊死在一起。因此,在完全失效之前器件能够进行的开关周期数有限,从而限制了其总体可靠性。 一般情况下继电器控制…...
工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet
论文:https://arxiv.org/pdf/2311.14897v3.pdf 项目:https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位,这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…...
如何创建对话窗口
文章目录 1. 概念介绍2. 使用方法3. 示例代码我们在上一章回中介绍了Dismissible Widget相关的内容,本章回中将介绍AlertDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们介绍的AlertDialog是指程序中弹出的确认窗口,其实我们在上一章回中删除ListView中…...
新手上路,学Go还是Python
对于新手来说,Go和Python都是很好的编程语言,它们各有特点,以下是详细的对比来帮助你决定先学哪一个: 一、语法和学习难度 Python 语法简洁易懂:Python以其简洁、优雅的语法而闻名,代码的可读性很高。例如…...
<!DOCTYPE html>的作用是什么
一、背景 从今天开始会不定时的发布一些前端的常见面试题,供大家参考。今天要发布的内容是关于html的面试题的作用是什么。接下来就一起讨论以下吧 二、概念 DOCTYPE 是html5中一种标准通用标记语言的文档类型的声明,它的目的就是为了告诉浏览器应该以…...
EasyExcel改名为FastExce做了那些改变呢
回到:github原作者地址:https://github.com/CodePhiliaX/fastexcel 中文 |English | 什么是 FastExcel FastExcel 是由原 EasyExcel 作者创建的新项目。2023 年我已从阿里离职,近期阿里宣布停止更新 EasyExcel,作者他本人决定继…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
