What I'm having is a strange problem in typical scenario: QTcpServer's method incomingConnection is overrided in custom class, and any received connection is planned for processing in separate thread on QThreadPool.
Server:
void FooS::incomingConnection(qintptr socketDescriptor)
{
    QThreadPool *thread_pool = QThreadPool::globalInstance();
    FooSocket *fs = new FooSocket();
    fs->setSocket(socketDescriptor);
    thread_pool->start(fs);
}
Task:
class FooSocket: public QObject, public QRunnable;
...
private slots:
   void connectionIncomingData();
...
void FooSocket::run() {
    QTcpSocket *socket = new QTcpSocket();
    qDebug() << "SD: " << socketDescriptor; // is correct
    if (!socket->setSocketDescriptor(socketDescriptor)) {
        qDebug() << "Can't set socket descriptor";
        emit error(socket->error());
        return;
    }
//  -- had no effect here
// socket->moveToThread(QThread::currentThread()); 
    connect(socket, SIGNAL(readyRead()), this, SLOT(connectionIncomingData()));
    connect(socket, SIGNAL(disconnected()), this, SLOT(connectionClosed()));    
}
readyRead signal doesn't gets triggered, but socket client is confirmed (tcpdump) to send data..
After making QRunnable to spawn a QThread object with socket logics inside, and toying with setAutoDelete, moveToThread - still no effect.