My problem is that emit is called but signal is never received by the client class which which was connected to this signal the main thread.
A common issue is typos in the connect() line.
Do you get a connect() no such signal/slot warning while building?

2 - Can the client class connect to the QThread BEFORE the tread has been started (before call to start()) ?
If you have the addresses of the emitting and receiving objects, you can connect them at any time.