• 1156阅读
  • 1回复

[提问]新手提问:关于实时绘制折线图 [复制链接]

上一主题 下一主题
离线iop1277
 

只看楼主 倒序阅读 楼主  发表于: 2022-03-10
这是初始化函数,成员定义在头文件
  1. void MainWindow::chart_init(){
  2.     chart=new QChart();
  3.     access_series=new QLineSeries();
  4.     axisX=new QDateTimeAxis();
  5.     axisY=new QValueAxis();
  6.     chartView = new QChartView(chart);
  7.     access_point_n=0;
  8.     chart->legend()->hide(); //隐藏辅助点
  9.     axisX->setTitleText("时间");
  10.     axisX->setFormat("mm:ss");
  11.     axisX->setTickCount(15);
  12.     //chart->createDefaultAxes();
  13.     axisY->setTitleText("请求量");
  14.     axisY->setLabelFormat("%d");  //纵坐标精度
  15.     axisY->setGridLineVisible(true); //显示网格线
  16.     axisY->setMinorTickCount(-1); //统计图会出现的横线,-1自动确定
  17.     chart->addAxis(axisY, Qt::AlignLeft);
  18.     chart->setBackgroundBrush(QColor(250,250,250)); //背景浅灰色
  19.     chart->addAxis(axisX, Qt::AlignBottom);
  20.     chartView->setRenderHint(QPainter::Antialiasing);
  21.     //chart->setTitle("总请求量");
  22.     //chart->setAnimationOptions(QChart::SeriesAnimations); //设置曲线呈动画显示
  23.     //chart->addSeries(access_series);
  24.     //axisX->setTickCount(access_series->count());
  25.     access_series->attachAxis(axisX);
  26.     access_series->attachAxis(axisY);
  27.     ui->widget_access_monitor->setRenderHint(QPainter::Antialiasing);
  28.     ui->widget_access_monitor->setChart(chart);
  29. }
这是每隔一段时间就会触发的函数,用来接受数据把点添加到线上
  1. void MainWindow::recPointFromThread(QDateTime *time,int *count){
  2.     chart->removeSeries(access_series);
  3.     qDebug()<<"count="<<*count;
  4.     qDebug()<<"rec time: "<<time->date()<<time->time();
  5.     if(access_point_n<15){
  6.         access_series->append(time->toMSecsSinceEpoch(),*count+12);
  7.         access_point_n++;
  8.     }
  9.     else{
  10.         access_series->remove(0);
  11.         access_series->append(time->toMSecsSinceEpoch(),*count+12);
  12.     }
  13.     qDebug()<<"access count="<<access_series->count();
  14. //    access_series->attachAxis(axisX);
  15. //    access_series->attachAxis(axisY);
  16.     chart->addSeries(access_series);
  17. //    chart->removeAxis(axisX);
  18. //    chart->removeAxis(axisY);
  19. //    chart->addAxis(axisY, Qt::AlignLeft);
  20. //    chart->addAxis(axisX, Qt::AlignBottom);
  21. }

已经尝试过很多方法了,始终无法正常绘图,我在chart->addSeries(access_series) 这句代码下面加入 chart->createDefaultAxes(); 就可以正常绘图,但是X轴变成了数字
在线20091001753

只看该作者 1楼 发表于: 2022-03-11
在 Qt 的安装位置有很多 Demo 可以供你参考。
例如:C:\Qt\Examples\Qt-5.15.2\charts\
(づ ̄ 3 ̄)づ
快速回复
限100 字节
 
上一个 下一个