其实就是用了一个记时器,而且相当极端,把startTime搞成了0,真是可怕啊
运行截图如下:
代码如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include "qcustomplot.h" namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); void timerEvent(QTimerEvent* event); private: Ui::Widget *ui; QCPItemTracer *m_myPhaseTracer; QString m_myName; QVector<double> x,y; int pos; int m_timer; }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <math.h> #include <QTime> Widget::Widget(QWidget *parent) : QWidget(parent), x(100), y(100), ui(new Ui::Widget) { ui->setupUi(this); m_myName="我的折线图"; for(int i=0;i<100;i++){ x[i]=i; y[i]=1; } pos=0; m_timer=startTimer(0); ui->plot->addGraph(); ui->plot->graph()->setData(x,y); ui->plot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom); } Widget::~Widget() { delete ui; } void Widget::timerEvent(QTimerEvent* event){ double secs = QCPAxisTickerDateTime::dateTimeToKey(QDateTime::currentDateTime()); int n = 500; double phase = secs*5; double k = 3; QVector<double> x(n), y(n); for (int i=0; i<n; ++i) { x[i] = i/(double)(n-1)*34 - 17; y[i] = qExp(-x[i]*x[i]/20.0)*qSin(k*x[i]+phase); } ui->plot->graph()->setData(x, y); ui->plot->replot(); }
main.cpp
#include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }