pro
QT += charts
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QChartView>
#include <QLineSeries>
#include <QTimer>
#include <QValueAxis>
QT_CHARTS_USE_NAMESPACE
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void dealTimeOut();
private:
Ui::MainWindow *ui;
QLineSeries *m_series;
QChartView *m_chartView;
QChart *m_chart;
QList<QPointF> m_points;
QTimer *m_timer;
QValueAxis *m_axisX;
QValueAxis *m_axisY;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QValueAxis>
#include "QLineSeries"
#include "QValueAxis"
#include "QTimer"
#include "QTime"
#include "QList"
#include "qmath.h"
#include "QPointF"
#include "QDebug"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_series = new QLineSeries();
m_chart = new QChart();
m_chart->legend()->hide();
m_chart->addSeries(m_series);
m_axisX = new QValueAxis;
m_axisX->setRange(0,20);
m_axisY = new QValueAxis;
m_axisY->setRange(0,20);
m_chart->setAxisX(m_axisX,m_series);
m_chart->setAxisY(m_axisY,m_series);
m_chartView = new QChartView(m_chart);
ui->verticalLayout->addWidget(m_chartView);
m_timer = new QTimer();
connect(m_timer,SIGNAL(timeout()),this,SLOT(dealTimeOut()));
m_timer->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::dealTimeOut()
{
static int i = 0;
static int j = 0;
static int h = 0;
QTime time;
time= QTime::currentTime();
qsrand(time.msec()+time.second()*1000);
int n = qrand() % 10; //产生10以内的随机数
m_points.append(QPointF(i,n));
m_series->replace(m_points);
if(i > 10)
{
m_axisX->setRange(j++, 20+h++);//设置x坐标轴
m_points.removeFirst();
}
i++;
}