其实就是用了一个记时器,而且相当极端,把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();
}