А Вы не гадайте, где выходит. Допишите внутри каждого if вывод в qDebug() сообщения мол "Отправилось"/"Пришли данные", и аналогично можно в ветвях else.
Исключительно для теста можно перевести код в асинхронный режим и проверить, испускается ли сигнал readyRead, чтобы наверняка знать, приходят данные или нет.
Это, так сказать, действия в случаях проявления магии "оно должно работать, но не работает"