试图在 Qt 上获得 运行 时间戳

trying to get a running time stamp on Qt

我试图每隔这么多毫秒就保留一个 运行ning 时间戳。这最终将附加到温度读数上。现在时间戳只在我的程序的其余部分有 运行 之后显示,我需要它实时填充。我使用 QTimer 更新的代码是

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT());

//delay set to space out time readings, can be adjusted
timer->start(750);

//Gets the time    
QTime time = QTime::currentTime();

//Converts to string with chosen format    
QString sTime = time.toString("hh:mm:ss:ms");

//displays current time in text edit box    
ui->tempTimeNoHeatMode->append(sTime);
//Pre heat turns on for selected # of seconds
   digitalWrite(2,1);
   delay(preHeat * 1000);
   digitalWrite(2,0);


   //Set loop to run while flow time is not 0
   while(flowTime > 0)
 {

   displayCurrentTime();

   //set zero pin to be high while flowtime is more than 0
   digitalWrite(0,1);

   flowTime--;

   // set second pin LED to flash according to dutyCycle
       digitalWrite(2,1);
       delay(onTime);
       digitalWrite(2,0);
       delay(offTime);

 }

 //turn zero pin low after flow time reaches 0
 digitalWrite(0,0);

}

稍后在我的 project.I 中使用 QtCreator 4

,代码控制两个 LED 代表加热器和水流

UI 不更新的原因是您永远不会将控制权交给事件循环,因此主线程只有在您的代码之后才有机会更新 UI已执行。

这里有两种可能的解决方案:

  1. 时间更改后,将现有代码移至 background thread that fires a signal。然后在主线程中,将该信号连接到更新 UI.
  2. 的插槽
  3. 与其循环调用 delay(),不如将所有这些代码放入一个函数或方法中,并使用 QTimer 使其每 750 毫秒执行一次。