0

特定の条件が真になるのを待つタイマーを開始しました。IF条件が真の場合、タイマーを停止し、タイムアウト信号を送信したり、接続されたスロットを実行したりしたくありません。ただし、指定された時間内に条件が false の場合は、timeout() シグナルを発行しても問題ありません。しかし、どのような場合でも、常にタイムアウト信号を発します。blockSignals ( true ) も使用しましたが、機能しません。どなたかアドバイスをお願いします。

void timerStart( QTimer* timer, int timeMillisecond )
{
  timer = new QTimer( this );
  timer->setInterval( timeMillisecond );
  timer->setSingleShot( true );
  connect( timer, SIGNAL( timeout() ), this, SLOT( noRespFrmServer( ) ) ) ;
  //timer->start( timeMillisecond );
  timer->start();
}
void timerStop( QTimer* timer )
{
  connect( timer, SIGNAL( destroyed( timer ) ), this, SLOT( stopTimerbeforeTimeout( ) ) );
  qDebug() << " we are in timer stop";
  if( timer )
    {
      timer->stop();
      timer->blockSignals( true );
      delete timer;
    }
}

また、timerStop 関数で破棄された信号を送信しようとしましたが、接続に失敗したという応答がありました。私にアドバイスしてください。

4

1 に答える 1