Multi-client TCP server with a thread for each client and DB connection pool
I am not sure how QThreads work:


Is it a wrapper around an OS thread?
Are QThreads pooled? 


Assuming a QThread is a wrapper and not pooled.

Then this technique is actually very limiting. The trouble is that threads are relatively expensive to create, in reality you can only run a handful of them simultaneously without cost (creating more than 2x the processors is probably a bad idea), In socket programming most of the threads are idle (network is very slow compared to the speed of the processor).

There is a famous paper on the top c10k. Basically given current network speeds and processor speeds you should easily be able to support 10 thousand simultaneous connections. But using this model you will top out supporting a couple of hundred simultaneous connections.

Basically you want to design your server around a single thread model and use pselect() (though this is now outdated by better options poll(), epoll() and finally LibEvent). Don't bother experimenting with the older versions just jump to LibEvent.