class MyEvent : public QCustomEvent {public: ... int mActionID; // действие QObject * mSender; // удобно записать посылающего ...... // передаваемые данные};
MyEvent * evt = new MyEvent();evt->mActionID = ... // заряжаем данные для передачиevt->mSender = this;QAppication::postEvent(theReceiver[threadIndex], evt); // посылаем объекту нитки с индексом threadIndex
void MyReceiver::customEvent( QEvent * event ){ MyEvent * evt = dynamic_cast <MyEvent *> (event); if (!evt) return; switch (evt->mActionID) { .... case ACT_1: ... postEvent(evt->mSender, reply); // отвечаем пославшему break; } }
void MyReceiver::customEvent( QEvent * event ){ MyEvent * evt = qobject_cast <MyEvent *> (evt);
//отправитель сигнала ThreadCore sender = (ThreadCore)signalSender(); wv = new QWebView(); wv.load(new QUrl("http://site.com/")); /* на этом этапе всё равно ошибка "Cannot create children for a parent that is in a different thread.", несмотря на то, что QWebView и QUrl созданы в классе формы, т.е. главном потоке*/ sender.setData(true);