QCustomPlot使用范例(一)

QCustomPlot是一个基于Qt中的一个的图形库,用于绘制各种图示,并为实时可视化应用程序提供高性能服务。

QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG、BMP)。

可在自己的项目中直接使用两个源文件(qcustomplot.h与qcustomplot.cpp),或预先编译成库。

下载地址:https://www.qcustomplot.com/

使用方法:

下载之后文件夹中有qcustomplot.h和qcustomplot.cpp。

在TQ中新建好工程之后,只需要分别导入这两个文件即可。当然,也可以采用动态库等方式导入QCustomPlot库。

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使用范例(一)

这只是根据官方文档中修改的一个小例子,其它的还有很多例子,按照这样的形式可以直接使用。具体见:qcustomplot官方首页

上一篇:Qt小作业串口调试助手


下一篇:WPF添加类库并引用