文档章节

qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程

尘中远
 尘中远
发布于 2016/05/12 23:53
字数 828
阅读 390
收藏 0
点赞 3
评论 0

1.概述

QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己使用两个源文件也可以自己编译成库文件,非常方便。

官方网站:http://www.qcustomplot.com/

1.0下载地址:http://download.csdn.net/detail/czyt1988/5986701

下面展示一下它的超强功能:
























1.安装

使用QCustomPlot非常简单,只需要把qcustomplot.cpp和qcustomplot.h拷贝到工程目录下,然后把这两个文件引入工程项目即可

在项目中点右键添加现有文件,把两个文件加入工程


这时pro文件会添加上qcustomplot.cpp和qcustomplot.h,这时还需要添加的是

QT += widgets printsupport

由于使用到打印相关,所以需要加入printsupport,在原有的widgets 后面加入即可


这时就可以使用QCustomPlot了。

为了能在ui designer里面使用QCustomPlot,可以使用一个Widget窗体在ui设计器上,对这个窗体点击右键,选择提升为


把提升的类名填写为QCustomPlot即可,这样就可以使用了,使用就和我们用普通控件一样,ui->xxx->……


2.绘图

QCustomPlot的绘图过程非常非常简单。和大部分的绘图控件相似,绘图时首先需要有一个图形,或者说是图层,通过addGraph即可添加一个曲线图层,此函数返回这个曲线图层的指针,或者通过曲线索引来找到,所有添加的曲线都放置在一个list里面,如果是第一个添加的话,那么这个索引就是0了,

customPlot - >graph( 0)

当然每个曲线最好给它定义一个名字方便查找

可以使用setName和name函数分别设置和获取曲线的名字

添加完曲线即可对这个曲线设置数据,QCustomPlot用于绘制趋势图非常方便

直接使用函数setData即可设置数据,

void setData (QCPDataMap *data, bool copy = false)
void setData ( const QVector < double > &key, const QVector < double > &value)

只要有个x,y等长度的vector数据即可轻松绘图

也可以追加数据

void addData ( const QCPDataMap &dataMap)
void addData ( const QCPData &data)
void addData ( double key, double value)
void addData ( const QVector < double > &keys, const QVector < double > &values)

QCustomPlot这个类设计的非常清晰明了,离散化程度不高,非常易用

设置完数据后可以对x,y轴进行设置

customPlot - >xAxis - >setLabel( "x");
customPlot - >yAxis - >setLabel( "y");

或者设置x,y轴的范围

customPlot - >xAxis - >setRange( - 1, 1);
customPlot - >yAxis - >setRange( 0, 1);

如果你不清楚范围,而已使用

QCustomPlot::rescaleAxes()函数,它会自动设置最合适的显示范围,非常简便。

设置完成后即可显示图像

使用QCustomPlot::replot函数使图像进行重绘,show函数也会触发重绘事件。

效果:


这时绘制出来的图像是不能移动或者是放大缩小的,QCustomPlot可以很简单实现移动和放大缩小功能

使用QCustomPlot的函数setInteractions即可

setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);

这样就能实现移动和缩放了


C++ GUI Qt 4编程(第二版) Qt中的C++技术 Qt5开发及实例 ARM9嵌入式系统设计直通车


© 著作权归作者所有

共有 人打赏支持
尘中远
粉丝 1
博文 26
码字总数 47436
作品 0
朝阳
程序员
QT使用qcustomplot 绘制柱状图

今天因为需要在QT底下绘制一个柱状图,由于不想自己麻烦重载一个QWidget所以就在网上搜索到了QCustomPlot,按照这个项目主页的图像显示它是可以满足我的要求。 首先来看一下效果图(绘制风格...

quanwei9958
2014/11/13
0
10
qt项目中QVector动态数组无法添加值进去

qt的项目,里面添加了qcustomplot头文件和源文件,在整个工程里面所有使用QVector数组没有办法使用pushback()方法添加值,我声明的是一个QVector数组,使用了pushback()方法以后,添加进去的...

Edison_M79
06/06
0
0
Qt之qcustomplot绘图总结

1、绘图类: QCPGraph :折线图 QCPCurve:用于曲线图,可以有循环 QCPBars:柱形图,如果有多个QCPBars ,可以依次重叠 QCPStatisticalBox(需实例化):盒子图 QCPColorMap(实例化):色谱...

u014252478
05/24
0
0
获取选中点对于Qcustomplot坐标轴的坐标值

原理是通过鼠标事件获取点击的坐标点,然后经过一系列转换,获取坐标值: 1、头文件中定义鼠标事件槽函数: 2、源文件中定义信号槽: 需要注意的是:的函数原型将第一个参数视为全局坐标,当...

qq_40194498
04/18
0
0
中国智能设备制造企业股份有限公司/LibQQt

LibQQt LibQQt全名QQt Foundation Class。 LibQQt为基于Qt开发的App提供中间问题处理层,适配桌面、嵌入式以及Android、IOS的开发。 LibQQt为用户自动生成Library SDK,主动帮助用户发布App...

中国智能设备制造企业股份有限公司
04/16
0
0
Qt第三方库----QCustomPlot

一、软件下载 下载地址:http://www.qcustomplot.com/index.php/download 这里推荐下载第一个链接的内容: 注:这里的第三方库要放在非中文目录下。 二、配置 (1)、新建工程,并且添加头文...

野渡书生
2015/11/30
700
0
Python GUI教程(十三):在GUI中绘制K线图

文章首发个人博客:http://zmister.com Python GUI教程(一):在PyQt5中创建第一个GUI图形用户界面 Python GUI教程(二):添加窗口小部件到图形用户界面GUI中 Python GUI教程(三):在GUI...

州的先生
2017/12/01
0
0
基于Qt5的快速开发框架--QCFramer

作为一名Qter,我们都知道Qt的强大带给我们nice的编码体验。伴随着用户交互体验越来越受到重视,移动端UI交互体验的冲击,PC端UI交互体验的提升近在眼前。Qt基于c++的跨平台开发框架,已经帮...

ding465398889
2014/07/04
11.8K
0
应用程序中调用了Qcustomplot类,工程在添加Qt3D模块后出现了编译问题

本来未涉及Qt3D模块时,QCustomPlot类的调用和编译时是正常的,后来在工程中添加了Qt3D模块,编译就出现了关于静态声明等问题 D:ProgramfilesQtQt5.6.05.6mingw4932includeQtCoreqnamespace...

june_lee
2016/07/06
253
0
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
4分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
11分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
14分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
46分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
46分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
48分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
49分钟前
9
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
50分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部