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.cpp、qcustomplot.h 复制到工程目录下。
QtCreater 打开现有工程。
右键,添加现有文件,选择 qcustomplot.cpp、qcustomplot.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~5
customPlot->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 学习例程下载