シェルプロセスを実行する関数を開始するために実装QtConcurrent::run()
する次のコードがあります。完了したら、関数を呼び出したいのですが、呼び出されません。QFutureWatcher
fetch()
writeDesc
void MyClass::on_fetchButton_clicked()
{
QFuture<void> fetcher;
QFutureWatcher<void> watcher;
connect(&watcher, SIGNAL(finished()), this, SLOT(writeDesc()));
fetcher = QtConcurrent::run(this, &MyClass::fetch);
watcher.setFuture(fetcher);
}
void MyClass::fetch()
{
[...]
qDebug()<<"Thread done";
}
void MyClass::writeDesc()
{
qDebug()<<"Slot called";
[...]
}
fetch()
正常に動作しますが、プログラムはデバッグ メッセージのみを表示Thread done
し、Slot called
. なぜwriteDesc
呼び出されないのですか?