That's quite interesting. The docs say:So it looks like that if you use Qt::AutoConnection, the effective connection type is established for each signal, not once when the connection is created.If the signal is emitted from the thread in which the receiving object lives, the slot is invoked directly, as with Qt::DirectConnection; otherwise the signal is queued, as with Qt::QueuedConnection.
It looks like the Client object lives in the main thread, so the meta call events go through main thread's event queue. One possible solution is to use QObject::moveToThread() (of course in such case there must be an event loop running in the Client thread).
Bookmarks