Quote Originally Posted by Eos Pengwern View Post
and I'm unsure how to look for a bottleneck.
Debugging. There are a lot of techniques and programs you can apply to find where the problem is.
The most simple technique is to add qDebug() statements in your code. You can put your program through a tracer and log the time it takes to perform a function or statement. Etc.

one of the threads is receiving images over an ethernet connection, so can't easily be 'slowed down'.
You can but this is most likely not the problem.

If the main thread gets unresponsive, than the problem is most likely in the main thread itself, not any of the other threads.