终止计时器由 startTimer() 启动

kill timer started with startTimer()

本文关键字:启动 startTimer 计时器 终止      更新时间:2023-10-16

我有一个计时器,我在我的start((函数中启动它。它控制一个timerEvent函数,但我无法阻止它。我尝试了 killTimer((,但我不知道它的 ID。

startTimer(60);
void Game::timerEvent(QTimerEvent *){}
killTimer(0);

killTimer(0( 不会返回错误,但每隔一个 id 都会返回错误,但它仍然不会杀死计时器。有没有办法通过函数获取计时器 ID?错误:QObject::killTimer((:错误:计时器 ID 1 对对象 0x1c81bff8(游戏、(无效,计时器尚未被杀死

编辑://小例子

start(){ 
scene->setSceneRect(0,0,1200,800);
setScene(scene);
timerId = this->startTimer(60);
}
//when the game ends, i call konec();
konec(){
 if(winner==1 || winnerCPU==1){
     removeAllItems(); // this function attemps to stop the timer
     scene->setSceneRect(0,0,1200,800);
     setScene(scene);
     }
     //i have this on a timer also, it stats with start() but i stop the 
     //timer in removeAllItems()
     // may this cause multiple timers IDs?
     QRectF rect = scene->sceneRect();
     rect.translate(avto->speed, 0);
     scene->setSceneRect(rect);
removeAllItems(){ /
timer->stop();
timer2->stop();
mtimer->stop();
shifter->stop();
time->stop();
move_timer->stop();
this->killTimer(timerId);

QList<QGraphicsItem *> stvari = scene->items();
for(int i=0, n=stvari.size();i<n;i++){
    if((typeid(*(stvari[i]))==typeid(Button)) || (typeid(*
(stvari[i]))==typeid(QTableView)) ||
            (typeid(*(stvari[i]))==typeid(Count)) || (typeid(*
(stvari[i]))==typeid(Linija)) ||
            (typeid(*(stvari[i]))==typeid(Player)) || (typeid(*
(stvari[i]))==typeid(Player2)) ||
            (typeid(*(stvari[i]))==typeid(Sred)))
            scene->removeItem(stvari[i]);}
}

如果你看一下startTimer的定义,你会发现它说:

启动

计时器并返回计时器标识符,如果无法启动计时器,则返回零。

因此,您需要使用它返回int killTimer

  int timerId;
  timerId = startTimer(60);
  killTimer(timerId);