5

スレッドで作業の無限ループを作成する必要があります。この記事では、著者は次のように書いています。

 >you should never ever block the event loop

シグナルスロットの概念をブロックするためです。でイベントループと無限ループを使用するにはどうすればよいQThreadですか?

4

3 に答える 3

4

ループは、常に複数回呼び出される関数に置き換えることができます (ただし、常に便利というわけではありません)。スロットを作成し、それに接続QTimerします。関数に作業の反復を行わせます。

timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(iteration()));
timer->start(50); 

void MyClass::iteration() {
  if (!timer->isActive()) { return; }
  //do something
}

ループを止めたい場合は、 を呼び出しますtimer->stop()

于 2013-07-08T09:50:42.123 に答える