можно слать 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 документа на парсинг в несколько потоков.