If I understand the following code from the QFutureWatcher documentation correctly, then there is a race condition between the last to lines:
// Instantiate the objects and connect to the finished signal.
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));
// Start the computation.
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);
If the function ...
in the QtConcurrent::run(...)
finishes before the next line is called, then the watcher.finished()
signal will never be triggered. Is my assumption correct? How do I work around this bug?