One idea* is:
Create a slot without parameters in some place with access to data string. Connect readyread() with this slot.
Declare a signal with a string parameter.
And in the first slot you can emit the other signal with parameter (which will be connected to your slot that expects a string)

*You must think about other ideas all depends on how your classes are designed
Or even direct function call, slots are member functions, so can be called just like any other member function.

//Consider using QString instead std::string.