можно слать QEvent потокам через post/sendEvent. У вашего потока должен быть запущен свой менеджер сообщений вызовом exec().
Если вкратце.
Делаем наследника от QEvent, определяем его тип (числовая константа QEvent::UserType + ваш номер).
Потом отправляем вашему конкретному потоку это сообщение
const QEventType (int может быть не помню, см. в хелпе) MyType = QtEvent::UserType + 1;
class MyEvent : public QEvent {
private:
 int someData;
public:
 MyEvent(QEvent::Type type){..}
 void setDatd(int i){someData = i;}
 int data() const { return someData; }
};
class MyThread: public QThread {
private:
 void customEvent(QEvent * e) //или bool event(QEvent * e) //не помню какая ф-я вызывается, смотрите в доках
 {
  switch(e->type())
  {
   case MyType:
   MyEvent * myEvent = static_cast<MyEvent*>(e);
   int data = myEvent->data();
   myEvent->accept();
   //делаете со своим ответом что хотите
   break;
  default:
  QThread::customEvent(e);
  }
    
 }
public:
 void run() { exec(); }
};
QThread * t = new MyThread;
t->start();
MyEvent * event = new MyEvent(MyType);
event->setData(1000);
sendEvent(t,event); //шлем событие конкретному потоку, другие не получат
Вот так я у себя реализовывал рассылку частей json документа на парсинг в несколько потоков.