300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > QT——Qcharts绘制实时曲线

QT——Qcharts绘制实时曲线

时间:2023-02-11 06:19:55

相关推荐

QT——Qcharts绘制实时曲线

本文将使用QT实现一个简单的动态实时曲线,将来可以把数据收集起来,做成一个可视化的曲线

效果图

1. 创建好工程之后,在.Pro文件增加 charts

2. 在设计里,拖动一个 Graphics View ,然后提升为QChartView

3. 添加头文件和命名空间

4. 创建表

//创建表void MainWindow::CreatCharts(){QChart *qchart = new QChart;//把chart放到容器里ui->graphicsView->setChart(qchart);//设置抗锯齿ui->graphicsView->setRenderHint(QPainter::Antialiasing);//创建两条线QLineSeries *ser0 = new QLineSeries;QLineSeries *ser1 = new QLineSeries;//设置名字ser0->setName("ser0");ser1->setName("ser1");//放入charts里qchart->addSeries(ser0);qchart->addSeries(ser1);//创建x坐标QDateTimeAxis *QaX = new QDateTimeAxis;//格式QaX->setFormat("hh:mm:ss");QaX->setTickCount(10);QaX->setTitleText("time");//创建y坐标QValueAxis *QaY = new QValueAxis;//设置范围QaY->setRange(-1,1);QaY->setTickCount(6);//将线条放入表中qchart->setAxisX(QaX,ser0);qchart->setAxisY(QaY,ser0);qchart->setAxisX(QaX,ser1);qchart->setAxisY(QaY,ser1);}

5. 当前效果

6. 接下来要把曲线画上去创建QTimer类

7. 创建定时器、槽函数,1s给数据刷新一次

8. 数据更新

//数据更新void MainWindow::RefreshTime_Slot(){//获取当前时间QDateTime currentTime = QDateTime::currentDateTime();//获取随机数qsrand(QTime::currentTime().second());int rand = qrand()%100;//获取0~10之间的数//获取初始化的qchartQChart *qchart =(QChart *)ui->graphicsView->chart();//获取之前的serQLineSeries *ser0 = (QLineSeries *)ui->graphicsView->chart()->series().at(0);QLineSeries *ser1 = (QLineSeries *)ui->graphicsView->chart()->series().at(1);//更新数据ser0->append(currentTime.toMSecsSinceEpoch(),cos(rand));ser1->append(currentTime.toMSecsSinceEpoch(),sin(rand));qchart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-1*30));qchart->axisX()->setMax(QDateTime::currentDateTime().addSecs(1*30));ui->label->setText(QTime::currentTime().toString("hh:mm:ss"));}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。