ui界面


核心代码
void Dialog::slot_timer()
{qreal xOffset=0.f;qreal dIncrease=10;for(int i=0;i<10;i++){m_x+=dIncrease;xOffset+=dIncrease;m_splineSerise->append(m_x,qrand()%10);}if(m_splineSerise->count()>c_MaxSize){m_splineSerise->removePoints(0,m_splineSerise->count()*0.5-c_MaxSize);}qreal xUnit =m_chart->plotArea().width()/(m_axisX->max()-m_axisX->min());qreal xScroll =xOffset*xUnit;m_chart->scroll(xScroll,0);}
全部代码
#include "dialog.h"
#include "ui_dialog.h"const quint32 c_MaxSize=1000;Dialog::Dialog(QWidget *parent):QDialog(parent),ui(new Ui::Dialog),m_x(0.f),m_splineSerise(NULL)
{ui->setupUi(this);m_splineSerise=new QSplineSeries(this);m_x=1000;m_splineSerise->append(m_x,1);m_chart=new QChart();m_chart->addSeries(m_splineSerise);m_axisX = new QValueAxis();m_axisX->setRange(0,c_MaxSize);m_axisX->setTitleText(QStringLiteral("X"));m_axisX->setLabelFormat("%g");m_axisX->setTickCount(5);m_axisY= new QValueAxis();m_axisY->setRange(-10,10);m_axisY->setTitleText(QStringLiteral("Y"));m_chart->setAxisX(m_axisX,m_splineSerise);m_chart->setAxisY(m_axisY,m_splineSerise);m_chart->legend()->hide();m_chart->setTheme(QtCharts::QChart::ChartThemeBlueCerulean);m_chart->setTitle(QString("图表1"));m_chart->setGeometry(0,0,500,300);m_pScene =new QGraphicsScene(this);ui->graphicsView->setScene(m_pScene);m_pScene->addItem(m_chart);ui->graphicsView->setRenderHint(QPainter::Antialiasing,true);m_timer=new QTimer(this);m_timer->setInterval(100);connect(m_timer,&QTimer::timeout,this,&Dialog::slot_timer);m_timer->start();}Dialog::~Dialog()
{m_chart->removeAllSeries();delete ui;
}qreal Dialog::getData(qreal x)
{return qSin(x*2*M_PI)*7;
}void Dialog::slot_timer()
{qreal xOffset=0.f;qreal dIncrease=10;for(int i=0;i<10;i++){m_x+=dIncrease;xOffset+=dIncrease;m_splineSerise->append(m_x,qrand()%10);}if(m_splineSerise->count()>c_MaxSize){m_splineSerise->removePoints(0,m_splineSerise->count()*0.5-c_MaxSize);}qreal xUnit =m_chart->plotArea().width()/(m_axisX->max()-m_axisX->min());qreal xScroll =xOffset*xUnit;m_chart->scroll(xScroll,0);}