学习视频QT-如何绘制动态曲线(教程+源码)_哔哩哔哩_bilibili
视频有源码和教程,我是自己复现了一遍。
(建议每完成一步都运行一下,看看是否报错也方便排查)
ui界面添加绘图框->选择组件GraphcisView ->右键选中 提升为QChartView
1.
2.
3.
4.
mainwindow.cpp
/*绘制动态曲线*/
void MainWindow::Chart_Init()
{
chart = new QChart();//初始化QChart
lineSeries = new QSplineSeries();//初始化QSplineSeries
lineSeries ->setName("氧气浓度实时曲线");//设置曲线名称
chart->addSeries(lineSeries);//把曲线添加到初始化QChart的实例chart中
QValueAxis *axisX = new QValueAxis();
QValueAxis *axisY = new QValueAxis();//初始化XY的值
/*设置坐标轴显示范围*/
axisX->setMin(0);
axisX->setMax(MAX_X);
axisY->setMin(0);
axisY->setMax(MAX_Y);
/*设置坐标轴上的格点*/
axisX->setTickCount(10);
axisY->setTickCount(10);
/*设置坐标轴显示的名称*/
QFont font("Microsoft YaHei",8,QFont::Normal);//微软雅黑,字体大小8
axisX->setTitleFont(font);
axisY->setTitleFont(font);
axisX->setTitleText("X-时间t");
axisY->setTitleText("Y-氧气浓度");
/*设置网格不显示*/
axisY->setGridLineVisible(false);
/*
下方 Qt::AlignBottom;左方 Qt::AlignLeft;
上方 Qt::AlignTop; 右方 Qt::AlignRight;
*/
chart->addAxis(axisX,Qt::AlignBottom);
chart->addAxis(axisY,Qt::AlignLeft);
/*把曲线关联到坐标轴*/
lineSeries->attachAxis(axisX);
lineSeries->attachAxis(axisY);
/*把chart显示到窗口上*/
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);//设置渲染:抗锯齿,不设置曲线就显得不平滑
}
void MainWindow::DrawLine()
{
static int count = 0;
if(count > MAX_X)
{
lineSeries->removePoints(0,lineSeries->count()-MAX_X);//当曲线上最早的点超出X轴的范围时,剔除最早的点
chart->axisX()->setMin(count-MAX_X);
chart->axisX()->setMax(count);//更新X轴的范围
}
lineSeries->append(count,rand()%65);//随机生成0-65的随机数
count ++;
}
演示结果