c/c++语言开发共享QT QcustomPlot的简单使用

第一步、QcustomPlot是QT提供的一个第三方库,在使用前需要在QcustomPlot官网上进行下载。 第二步、把解压完的QcustomPlot压缩包中的qcustomplot.h和qcustomplot.cpp文件添加到工程文件中来。使用时应先在源文件处点击添加现有文件,把这两个文件添加进来 …

第一步、qcustomplot是qt提供的一个第三方库,在使用前需要在qcustomplot官网上进行下载。

第二步、把解压完的qcustomplot压缩包中的qcustomplot.h和qcustomplot.cpp文件添加到工程文件中来。使用时应先在源文件处点击添加现有文件,把这两个文件添加进来。

QT QcustomPlot的简单使用

 

QT QcustomPlot的简单使用

 

第三步、打开ui界面,把weiget控件添加到界面里,然后右键点击控件,选择提升

QT QcustomPlot的简单使用

在提升的类名上写qcustomplot,最后点击提升即可。

这样qcustomplot这个第三方库就可以使用了。

以下是一简单的曲线代码。

.cpp文件

#include "mainwindow.h"  #include "ui_mainwindow.h"  #include <qtime>  #include <qdebug>    mainwindow::mainwindow(qwidget *parent) :      qmainwindow(parent),      ui(new ui::mainwindow)  {      ui->setupui(this);      //设置鼠标点击精度      ui->customplot->setselectiontolerance(1);        for(int i=0;i<20;i++)      {          num[i]=0;      }      n=0;      qtimer *t = new qtimer(this);      t->start(500);      connect(t,signal(timeout()),this,slot(graph_show()));      connect(ui->customplot,signal(mouserelease(qmouseevent*)),this,slot(mousereleaseevent(qmouseevent*)));      //connect(tracer,signal(mousemove(qmouseevent*)),this,slot(mousemoveevent(qmouseevent*)));    }    mainwindow::~mainwindow()  {      delete ui;  }    void mainwindow::graph_show()  {      n += pi/8;      graph_show(ui->customplot);  }      void mainwindow::graph_show(qcustomplot *customplot)  {        qvector<double> x(20),y(20);      for(int i=0;i<19;i++)      {          num[i]=num[i+1];      }      num[19]=n;      for(int i=0;i<20;i++)      {          x[i] = i;          y[i] = sin(num[i]);      }      //添加一条曲线      customplot->addgraph();      //设置曲线的颜色      customplot->graph(0)->setpen(qpen(qt::red));      //给曲线传递两个参数      customplot->graph(0)->setdata(x,y);      //给曲线的横纵坐标命名      customplot->xaxis->setlabel("x");      customplot->yaxis->setlabel("y");      //设置横纵坐标的范围      customplot->xaxis->setrange(0,20);      customplot->yaxis->setrange(-3,3);      //进行曲线重画      customplot->replot();      /*      customplot->setinteraction(qcp::irangezoom,true);      customplot->axisrect()->setrangedrag(qt::vertical);      customplot->setinteraction(qcp::irangedrag,true);      */  }    void mainwindow::mousereleaseevent(qmouseevent *e)  {      //排除非左鼠标键      if (e->button() != qt::leftbutton)      {          return;      }        //获取点击的点坐标      qpointf chickedpoint = e->pos();      //排除区间外鼠标点      if(!ui->customplot->viewport().contains(e->pos()))      {          return;      }      //将像素坐标转换为轴值      double currentx = ui->customplot->xaxis->pixeltocoord(chickedpoint.x());      double currenty = ui->customplot->yaxis->pixeltocoord(chickedpoint.y());      //使用qtooltip输出值,      qtooltip::showtext(maptoglobal(e->pos()),qstring("当前点值为:x=%1,y=%2").arg(currentx).arg(currenty),this);  }

.h文件

#ifndef mainwindow_h  #define mainwindow_h    #include <qmainwindow>  #include "ui_mainwindow.h"  #include <qmouseevent>    #define pi 3.1415926    namespace ui {  class mainwindow;  }    class mainwindow : public qmainwindow  {      q_object    public:      explicit mainwindow(qwidget *parent = 0);      ~mainwindow();      //设置一容器      double num[20];      double n=0;      void graph_show(qcustomplot *customplot);    public slots:      void graph_show();      void mousereleaseevent(qmouseevent *e);  //     void mousemoveevent(qmouseevent *e);    private:      ui::mainwindow *ui;  };    #endif // mainwindow_h

静态曲线的命名方法可以选用:

    customplot->legend->setvisible(true);      customplot->graph(0)->setname("sin");

此处是对第一条曲线进行命名为“sin“。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602431.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐