Qt QCustomerPlot实时动态曲线

    xiaoxiao2021-03-25  60

    1.新建工程,添加QCustomer.h 和QCustomer.cpp源文件。

     MainWindow.h的头文件

    #include <QMainWindow> #include <QTimer> class Dialog; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow {     Q_OBJECT    public:     explicit MainWindow(QWidget *parent = 0);     ~MainWindow();      private:     Ui::MainWindow *ui;     QTimer *timer2;     Dialog *dlog1; private slots:     void updateplot(); }; #endif // MAINWINDOW_H

    MainWindow.cpp的源文件

    #include "mainwindow.h" #include "dialog.h" #include "ui_mainwindow.h" #include "qcustomplot.h" MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent),     ui(new Ui::MainWindow) {     ui->setupUi(this);     Dialog *dlog1=new Dialog(this);  //设置参数更新     ui->plot->addGraph();     ui->plot->graph(0)->setPen(QPen(Qt::red));     ui->plot->graph(0)->setBrush(QBrush(QColor(0,0,255,20)));     ui->plot->xAxis2->setVisible(true);     ui->plot->yAxis2->setVisible(true);     ui->plot->xAxis->setLabel("time");     ui->plot->yAxis->setLabel("Value");     ui->plot->axisRect()->setupFullAxesBox();     ui->plot->yAxis->setRange(-1.2,1.2);     QTimer *timer2=new QTimer(this);     connect(timer2,SIGNAL(timeout()),this,SLOT(updateplot()));     connect(ui->plot->xAxis,SIGNAL(rangeChanged(QCPRange)),ui->plot->xAxis2,SLOT(setRange(QCPRange)));  //设置自动更新     connect(ui->plot->yAxis,SIGNAL(rangeChanged(QCPRange)),ui->plot->yAxis2,SLOT(setRange(QCPRange)));   //设置自动更新     timer2->start(100); } MainWindow::~MainWindow() {     delete ui; } void MainWindow::updateplot() {     ui->label_3->setText(QObject::tr("Time=%1").arg(Dialog::i));     ui->label->setText(QObject::tr("A=%1").arg(Dialog::a));     ui->label_2->setText(QObject::tr("B=%1").arg(Dialog::b));     ui->plot->graph(0)->addData(Dialog::i,Dialog::b);     ui->plot->xAxis->setRange(Dialog::i,360,Qt::AlignRight);   //设置坐标轴更新样式     ui->plot->replot(); }

    转载请注明原文地址: https://ju.6miu.com/read-41084.html

    最新回复(0)