试图在 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已执行。
这里有两种可能的解决方案:
- 时间更改后,将现有代码移至 background thread that fires a signal。然后在主线程中,将该信号连接到更新 UI.
的插槽
- 与其循环调用 delay(),不如将所有这些代码放入一个函数或方法中,并使用 QTimer 使其每 750 毫秒执行一次。
我试图每隔这么多毫秒就保留一个 运行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
。
UI 不更新的原因是您永远不会将控制权交给事件循环,因此主线程只有在您的代码之后才有机会更新 UI已执行。
这里有两种可能的解决方案:
- 时间更改后,将现有代码移至 background thread that fires a signal。然后在主线程中,将该信号连接到更新 UI. 的插槽
- 与其循环调用 delay(),不如将所有这些代码放入一个函数或方法中,并使用 QTimer 使其每 750 毫秒执行一次。