QCustomPlot是一个基于Qt中的一个的图形库,用于绘制各种图示,并为实时可视化应用程序提供高性能服务。
QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG、BMP)。
可在自己的项目中直接使用两个源文件(qcustomplot.h与qcustomplot.cpp),或预先编译成库。
下载地址:https://www.qcustomplot.com/
使用方法:
下载之后文件夹中有qcustomplot.h和qcustomplot.cpp。
在TQ中新建好工程之后,只需要分别导入这两个文件即可。当然,也可以采用动态库等方式导入QCustomPlot库。
在工程文件.pro中添加QCustomPlot:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport #添加printsupport
TARGET = readCor
TEMPLATE = app
画图示例代码:
mainwindow.cpp文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qcustomplot.h"
#include <QColor>
#include <QVector>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("Test by fc");
QCustomPlot *customPlot = new QCustomPlot(this); //创建一个QCustomPlot对象
customPlot->addGraph(); //添加一条曲线
customPlot->graph(0)->setPen(QPen(Qt::blue)); //设置曲线颜色
customPlot->graph(0)->setBrush(QBrush(QColor(0,0,255,20)));//设置填充色
customPlot->graph(0)->setName("一"); // 设置曲线图的名字
customPlot->addGraph();
customPlot->graph(1)->setPen(QPen(Qt::red));
customPlot->graph(1)->setName("二"); // 设置曲线图的名字
QVector<double>x(251),y0(251),y1(251);
for (int i=0; i<251; ++i)
{
x[i] = i;
y0[i] = qExp(-i/150.0)*qCos(i/10.0);
y1[i] = qExp(-i/150.0);
}
/*
* 暂时不知道具体作用
customPlot->xAxis2->setVisible(true);
customPlot->xAxis2->setTickLabels(false);
customPlot->yAxis2->setVisible(true);
customPlot->yAxis2->setTickLabels(false);
// make left and bottom axes always transfer their ranges to right and top axes:
connect(customPlot->xAxis, SIGNAL(rangeChanged(QCPRange)), customPlot->xAxis2, SLOT(setRange(QCPRange)));
connect(customPlot->yAxis, SIGNAL(rangeChanged(QCPRange)), customPlot->yAxis2, SLOT(setRange(QCPRange)));
*/
customPlot->graph(0)->setData(x, y0); //设置数据
customPlot->graph(1)->setData(x, y1); //设置数据
customPlot->graph(0)->rescaleAxes(true); //缩放范围
customPlot->graph(1)->rescaleAxes(true);//缩放范围
// Note: we could have also just called customPlot->rescaleAxes(); instead
// Allow user to drag axis ranges with mouse, zoom with mouse wheel and select graphs by clicking:
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
customPlot->xAxis->setRange(-200, 400); // 设置x轴的范围
customPlot->yAxis->setRange(-1, 1); // 设置y轴的范围
customPlot->resize(600, 600); // 设置总的大小
customPlot->xAxis->setLabel("x"); // 设置x轴的标签
customPlot->yAxis->setLabel("y"); // 设置y轴的标签
// customPlot->setBackground(QColor(0,0,0));// 设置背景色
customPlot->legend->setVisible(true); // 显示图例
// customPlot->savePng("customPlot.png", 400, 300);
}
MainWindow::~MainWindow()
{
delete ui;
}
结果展示:
这只是根据官方文档中修改的一个小例子,其它的还有很多例子,按照这样的形式可以直接使用。具体见:qcustomplot官方首页