Вы можете привести небольшой пример задачи, которая требовала бы подобной реализации?
Насколько я понял, нет асинхронки, т.е. сигнал readyRead от дочернего процесса не приходит. А синхронно можно получить мертвое зависание если по каким-то причинам дочерний процесс умолк. Его можно вынести в поток (чтобы хоть UI жило), но проблемы это не решает.
Если так то да, это не раз жевалось, и обычный конец - отсылание к boost::asio