如何在图表的X轴上显示程序的运行时间(时间)?

时间:2019-04-16 12:04:10

标签: qt

我有一个动态图,其中我想在X轴上显示时间,并在Y轴上显示一些值,例如示波器。我使用QtChart绘制此图。我想知道如何在X轴上显示数据采集的时间。我要显示的格式是mm:ss。我的代码如下:

   //draw the line chart, dynamic update
   void MainWindow::drawLine()
   {

   //change the range of x-axis when added new point
   QDateTime bjtime = QDateTime::currentDateTime();

   //Sets the minimum range of the X-axis
   chart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-60 * 1));

   //Sets the maximum range of the X-axis
   chart->axisX()->setMax(QDateTime::currentDateTime().addSecs(0));

   //When the earliest point on the curve is beyond the X-axis, remove the 
   //earliest point.
   if(series_CH1->count() > 1000)
   {
        series_CH1->removePoints(0,series_CH1->count() - 1000);
   }

   //Generate random Numbers as test data
   int Y1 = qrand()%9;

   //Add a new point to the end of the curve
   series_CH1->append(bjtime.toMSecsSinceEpoch(),Y1);
  }

当我运行程序时,x轴为: month-day-year hour:minute,like 16-04-2019 19:53

我想要的是分钟:秒,并且时间(x轴)从00:00开始,因为我开始进行数据采集,而不是当前时间。 请帮助我如何在图表的X轴上显示时间。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以为'heroPhysics'定义格式。因此,您应该将其设置为:

QDateTimeAxis

此外,如果您希望它从chart->axisX()->setFormat("mm:ss"); 开始,则x轴的最小范围可以是历元时间的开始,而最大长度可以是所需的最大持续时间:

00:00

并且在添加新值时,您应该使用chart->axisX()->setMin(QDateTime::fromMSecsSinceEpoch(0)); chart->axisX()->setMin(QDateTime::fromMSecsSinceEpoch(3600*1000)); // one hour 来计算毫秒数,或者通过将自纪元以来的当前毫秒数与开始运行应用程序的值相区别来计算毫秒数。