1. 介绍

QCustomPlot 是用于绘图和数据可视化的 Qt C++小部件。该绘图库专注于制作美观、高质量的2D绘图、图形和图表,也提供高性能的实时可视化应用。

QCustomPlot可以导出为各种格式,例如矢量化PDF文件和图片(如PNG,JPG和BMP)。QCustomPlot为应用显示高质量的实时数据提供解决方案。

使用时要遵循 GPLv3协议,具有传染性,使用即要开放源码。而类似的图形库 QWT是 LGPL,只有修改了源码才需要开源,直接使用库开源与否自行决定。可由于 QWT配置繁琐,自己弄了大半天只能 Debug运行,不能 Release,劝退劝退,能用就行,自己学习用开源没什么大不了。

我的学习例程仓库,GitHub:QCustomPlot 学习例程下载

2. 下载库

QCustomPlot 官网下载地址:QCustomPlot官网下载

QCustomPlot 帮助文档:QCustomPlot入门帮助文档

进入下载页,下载位置有三个文件,其中第一个包含了源码、帮助文档和例程,可以帮助用户快速上手,下载第一项。

下载完成后,解压。

documentation 包含帮助文档、图片和文档链接。

examples 包含几个例程,点击其中的 .pro文件用Qt打开工程。

使用时,需要集成到自己工程中的只有 qcustomplot.cpp 和 qcustomplot.h 这两个文件,非常简便。

可以按照官网入门帮助的说明,去配置自己的工程,以支持 QCustomPlot的控件使用。

3. 导入到自己的工程

QCustomPlot 库的使用与自定义控件的使用类似。

(1)新建工程、导入源文件

新建一个带有 .ui界面的 工程。

在现有工程中,将 qcustomplot.cppqcustomplot.h 复制到工程目录下。

QtCreater 打开现有工程。

右键,添加现有文件,选择 qcustomplot.cppqcustomplot.h,将其导入工程。

(2)添加Qt变量

打开 .pro工程文件,向Qt变量中添加 printsupport

(3)调用 QCustomPlot 控件

在窗口类中包含头文件:#include "qcustomplot.h"

ui设计界面中,拖入一个 Widget控件。右键,"提升为"。

!调用 QCustomPlot 控件,都是通过 Widget 提升 修改代码 这种方法,不像 Qwt可以在左侧控件栏里可视化。

类名中输入 QCustomPlot,点击 "添加",选中名称,"提升"。

经过以上操作后,右侧对象浏览器中,widget 控件的类已经从 QWidget 变成了 QCustomPlot。

 

(4)初步运行

以上操作无误的话,就已经将一个 QCustomPlot控件成功导入。

此时运行,可以看到一个默认的 控件样式。QCustomPlot库已经可以在工程中被正常使用。

(5)改变 QCustomPlot 控件样式

通过更改代码的方式,来改变 QCustomPlot控件的显示内容。

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 给widget绘图控件,设置个别名,方便书写QCustomPlot *customPlot = ui->widget;// 设置坐标轴标签名称customPlot->xAxis->setLabel("x");customPlot->yAxis->setLabel("y");// 设置坐标轴显示范围,不设置时默认范围为 0~5customPlot->xAxis->setRange(-10, 10);customPlot->yAxis->setRange(-100, 100);/// 添加曲线有两种方法/// 第一种直接插入,使用控件的曲线数组 graph()。但要注意:曲线从 graph(0)开始递增的,超出添加的个数使用会报错。不推荐这种方式,容易搞错。// 添加一条绘图曲线customPlot->addGraph();// 设置曲线颜色customPlot->graph(0)->setPen(QPen(QColor(255, 0, 0)));// 曲线的坐标数据,计算x和y的坐标QVector<double> x(201), y(201);for (int i = 0; i < 201; ++i){x[i] = -10 + 0.1f *i;y[i] = sin(x[i])*50;  // y = 50sinx}// 设置曲线的坐标数据customPlot->graph(0)->setData(x, y);/// 第二种使用返回的指针,推荐使用这种方式,不容易出错。// 添加一条绘图曲线QCPGraph *pGraph2 = customPlot->addGraph();/// 这行代码等同于 customPlot->addGraph(); QCPGraph *pGraph2 = customPlot->graph(1);// 设置曲线颜色pGraph2->setPen(QPen(QColor(0, 0, 255)));// 曲线的坐标数据,计算x和y的坐标QVector<double> x1(201), y1(201);for (int i = 0; i < 201; ++i){x1[i] = -10 + 0.1f *i;y1[i] = cos(x1[i])*50;  // y = 50cosx}// 设置曲线的坐标数据pGraph2->setData(x1, y1);
}MainWindow::~MainWindow()
{delete ui;
}

4. 运行现象

至此,已经成功将QCustomPlot库添加到了自己的工程,就可以按照帮助手册,编写代码绘制自己需要的图形。

更多 QCustomPlot控件的使用操作,会在本专栏的后续篇章介绍,一起学习进步。

工程已同步至GitHub,欢迎下载学习。使用时记得遵循GPLv3哦。

我的学习例程仓库,GitHub:QCustomPlot 学习例程下载

【QCustomPlot】1.0 - QCustomPlot库添加到自己的工程、创建工程相关推荐

  1. 学习QCustomPlot【4】库官方examples之plots解读

    文章目录 一.前言 二.案例解说 0:Quadratic Demo[二次曲线demo] 1.Simple Demo[简单demo] 2.Sinc Scatter Demo[Sinc函数散点demo] ...

  2. QCustomPlot 1.0.1学习(1)-下载和使用QCustomPlot

    1.QCustomPlot介绍 QCustomPlot is a Qt C++ widget for plotting and data visualization. It has no furthe ...

  3. axure7.0元件库 安卓_AxureRP 7.0 元件库下载

    分享一些AxureRP 7.0 元件库下载 网上几乎你找不到AxureRP 7.0 元件库的下载地址..大多是失效的!!! 特此ouyaoxiazai发布一个压缩包,包含了一些AxureRP 7.0 ...

  4. win7 VS2013 新建工程 编译lua5.2.0 静态库

    一 lua下载 lua5.2.0下载地址 :http://download.csdn.net/download/yzf279533105/9949183 二 Windows下: 编译静态库步骤: 1. ...

  5. 给iOS库添加Cocoapods支持

    前言: 这个文章是摘自我原来的博客, 接下来我的打算是会在这里发布一些当下流行且实用(Python, RN, iOS 技术等)的技术和小伙伴们互相学习! 先立下一个flag, 起到一个督促作用! 以下 ...

  6. android平台下OpenGL ES 3.0给图片添加黑白滤镜

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  7. ESP32学习--库添加

    在esp32工程中添加第三方库 添加第三方库工程中main文件夹下的lib文件夹中 在main文件的CMakeLists.txt 文件中添加一下代码 add_subdirectory(lib/tiny ...

  8. 笔记2--Proe4.0 标准件库 安装

    Proe4.0 标准件库 安装 (国标零件库) 安装步骤:http://hi.baidu.com/lt05213/item/686365c904317c165050588e 假设将MONLibs解压后 ...

  9. VUE 2.0 插件库

    VUE 2.0 插件库 – https://blog.csdn.net/hjh15827475896/article/details/78207066 UI组件 element - 饿了么出品的Vue ...

最新文章

  1. ESXI5.5添加本地磁盘出错的解决
  2. python:进程操作
  3. 数据加密类型及创建和申请CA证书
  4. mean项目的分模块开发
  5. c语言while找rn,STM32Fatfs遍历文件(C语言实现)
  6. mysql 上一篇_mysql取上一篇和下一篇的查询
  7. Linux(1)-实用终端命令
  8. 【2017年第3期】开放政府环境下医药公司与医生之间的价值转移
  9. Drupal 7正式版本盛大发布!
  10. jdi屏幕斜纹_荣耀V10屏幕有斜纹问题,有人甚至因此退货,真的这么严重?
  11. java制作网站的原理_代码生成器原理
  12. BMC之ipmitool 命令收集
  13. 谷歌浏览器flash_谷歌浏览器今年12月开始,Flash Player将不再受支持
  14. BaseAdapter使用的三种形式,逗比式,普通式,文艺式
  15. 单模和多模光纤的区别是什么?
  16. 自定义注解+拦截器优化项目代码
  17. 大雨瓢泼!多地告急!告诉你雨天行车的全部秘密。
  18. 电脑怎么查看蓝牙版本
  19. 拓嘉辰丰:拼多多差异化运营,做特色店铺
  20. 无线充电仿真 simulink llc谐振器实现恒压输出 WPT 无线电能传输

热门文章

  1. P2479 [SDOI2010]捉迷藏
  2. phpmyadmin在nginx环境下配置错误
  3. HDU 1301 - Jungle Roads( Prim求最小生成树 )
  4. CentOS7.3下部署Rsyslog+LogAnalyzer+MySQL中央日志服务器
  5. redmine 和 gitolite 的整合
  6. 删除Ubuntu旧内核的几种方法,这下grub菜单看起来清爽多了!
  7. 在IE7 中遇到的几个小问题,有解决方案
  8. 页面中flash文件的加载
  9. Manjaro_xfce 安装后配置
  10. 自动量策略的开发和优化