gpt4 book ai didi

c++ - Qt 如何终止使用 startTimer() API 启动的计时器?

转载 作者:行者123 更新时间:2023-11-27 22:57:08 25 4
gpt4 key购买 nike

我使用 timerEvent(QTimerEvent *e) 更新倒数计时器,完成后我调用 killTimer(timerID)timerEvent() 仍在被调用。那么正确的杀灭方法是什么?

代码:

void MainWindow::timerEvent(QTimerEvent *e)
{
Q_UNUSED(e);

static uint16_t u16RemTime = MAX_WARMUP_TIME_IN_SECS;
if((true == isWarmUpStarted) && (u16RemTime > 0))
{

u16RemTime--;
objptrSplashScreen->SetTime(u16RemTime);
}
else
{
//Still running
qWarning("\n\n\n\n\n WARM UP TIMER RUNNING \n\n\n\n\n");
killTimer(warmUpTimerID);
}
}

如果有帮助。我有两个这样的计时器在同一个 GUI 线程的两个不同类中运行。我将如何杀死它?

最佳答案

timerEvent 接收所有计时器的事件。为了区分它们,QTimerEvent 类有 int timerId() const 方法。所以你的事件应该是这样的:

void MainWindow::timerEvent(QTimerEvent *e)
{
if (e->timerId() != warmUpTimerID)
return;

static uint16_t u16RemTime = MAX_WARMUP_TIME_IN_SECS;
if((true == isWarmUpStarted) && (u16RemTime > 0))
{
u16RemTime--;
objptrSplashScreen->SetTime(u16RemTime);
}
else
{
//Still running
qWarning("\n\n\n\n\n WARM UP TIMER RUNNING \n\n\n\n\n");
killTimer(warmUpTimerID);
}
}

关于c++ - Qt 如何终止使用 startTimer() API 启动的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com