From the description I would say that you're better off implementing your own thread pool, one that can deal with these kind of dependencies.

QThreadPool is more a fire-and-forget type solution, not so well suited for things that need to be controlled while things execute.

One library that could be interesting is https://inqlude.org/libraries/threadweaver.html
It has support for communicating between jobs and threadpool on whether to run a job at all, if to abort queueing it, etc., it can organize jobs in collections and so on.

Cheers,
_