この質問のような永久ループはありませんが、それでも finished() シグナルを発行しません。
クラスのコンストラクターで:
connect (&thread, SIGNAL(started()), SLOT(threadFunc()));
connect (&thread, SIGNAL(finished()), SLOT(finished()));
finished() 関数では、
void XX::finished()
{
qDebug() << "Completed";
}
void XX::threadFunc()
{
qDebug() << "Thread finished"; // only single line, finishes immediately
}
しかしfinished()
、スレッドを で開始する前に毎回 get が呼び出されることはありません。手動でthread.start()
呼び出す必要がありますthread.terminate()
。QThread の使用法を誤解していましたか?