Как я могу показать время выполнения программы (время) по оси X графика? - PullRequest
1 голос
/ 16 апреля 2019

У меня есть динамический график, на котором я хочу показать время по оси X и некоторые значения по оси Y, например, осциллограф. Я использую QtChart, чтобы нарисовать этот график. Мне интересно, как я могу показать время сбора данных по оси X. Формат, в котором я хочу показать это мм: сс. Мои коды следующие:

   //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 имеет вид: месяц-день-год час: минуты, как 16-04-2019 19: 53

что я хочу, это минуты: секунды, а время (ось X) начинается с 00:00, когда я начинаю сбор данных, а не текущее время. Пожалуйста, помогите мне, как мне показать время на моей оси X графика. Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете определить формат для QDateTimeAxis.Поэтому вы должны установить его на:

chart->axisX()->setFormat("mm:ss");

Также, если вы хотите, чтобы он начинался с 00:00, минимальный диапазон оси x может быть началом времени эпохи, а максимальный - желаемой максимальной продолжительностью.:

chart->axisX()->setMin(QDateTime::fromMSecsSinceEpoch(0));

chart->axisX()->setMin(QDateTime::fromMSecsSinceEpoch(3600*1000)); // one hour

И при добавлении новых значений вы должны вычислять миллисекунды, например, используя QElapsedTimer или дифференцируя текущие миллисекунды с начала эпохи от значения в начале запуска вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...