文章目录
- 效果
- 声明变量
- 构建静态图表
- 创建计时器连接信号与槽
- 槽函数核心代码
效果

声明变量

构建静态图表
m_splineSerise=new QSplineSeries(this);qreal x=0.f;for (size_t i=0;i<c_MaxSize;i++){x=qreal(i+1)/c_MaxSize;m_splineSerise->append(i,getData(x));}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();
槽函数核心代码
qreal Dialog::getData(qreal x)
{return qSin(x*2*M_PI)*7;
}void Dialog::slot_timer()
{static QTime tmBegin=QTime::currentTime();quint64 tmEllapsed=tmBegin.elapsed();quint64 nSkip=tmEllapsed-m_tmLast;QVector<QPointF> ptsOld = m_splineSerise->pointsVector();QVector<QPointF> ptsNew;qint64 i=0;for(i=0;i<(ptsOld.count()-nSkip);i++){ptsNew.append(QPointF(i,ptsOld[nSkip+i].y()));}qreal x=0.f;for(i=ptsOld.count()-nSkip;i<ptsOld.count();i++){x=qreal(m_tmLast+i+1)/c_MaxSize;ptsNew.append(QPointF(i,getData(x)));}m_splineSerise->replace(ptsNew);m_tmLast=tmEllapsed;
}
