Ok, here serial rx threaad emit the signal:
emit MessageReceivedSignal(); here the main thread catch the signal: connect(rxRoutine, SIGNAL(MessageReceivedSignal()),this, SLOT(TestSlot()),Qt::QueuedConnection); here is the constructor of scriptrunner that should catch the signal but it doesn't ScriptRunner::ScriptRunner(QObject *parent,Configuration *c,Script *s,TxRoutine *t,RxRoutine *r,ComunicationLogConfigList *l,Message1281* m) : QThread(parent) { message1281=m; comunicationLog=l; activeConfiguration=c; txRoutine=t; rxRoutine=r; myScript=s; exit=false; currentStep=0; connect(rxRoutine, SIGNAL(MessageReceivedSignal()),this, SLOT(TestSlot()),Qt::QueuedConnection); } and here is when i create the thread scriptrunner: qDebug()<<"going to start... "<<tmpScript->GetName(); tmpRunner=new ScriptRunner(0,activeConfiguration,tmpScript,txRoutine,rxRoutine,comunicationLog,message1281); tmpScript->SetRunning(true); tmpRunner->start(); runners.append(tmpRunner); Il 03 aprile 2012 11:12, Samuel Gaist <samuel.ga...@edeltech.ch> ha scritto: > If you show us the code you use to setup the connections, we might be able to > offer better help. > > Samuel > > On 3 avr. 2012, at 11:09, Riccardo Roasio wrote: > >> I'm trying using signal/slots with Qt::QueuedConnection. >> Now the problem is this one..i have >> >> - gui thread (main) >> >> - serial rx thread >> >> - scriptmanager thread >> | >> |----- script runner 1 thread (started from scriptsmanager) >> | >> |----- script runner 2 thread (started from scriptsmanager) >> | >> |----- script runner N thread (started from scriptsmanager) >> >> now the event is emitted from serial rx thread >> >> the main thread is able to catch the signal >> the scriptmanager is able to catch the signal >> the scriptrunner is NOT able to catch the signal >> >> the only difference is that the sciptrunner has no parent (in the >> construtor the parent is NULL) >> >> Riccardo >> >> >> >> >> Il 03 aprile 2012 09:29, Riccardo Roasio <riccardo.roa...@gmail.com> ha >> scritto: >>> Ok, >>> >>> i will try! >>> >>> thanks everybody >>> >>> Il 03 aprile 2012 09:19, Lincoln Ramsay <lincoln.ram...@nokia.com> ha >>> scritto: >>>> On 04/03/2012 05:07 PM, ext Riccardo Roasio wrote: >>>>> I cannot use signal/slot because is blocking and i need to continue >>>>> reading from serial port while message is processing... >>>> >>>> If you emit a signal and the receiver lives on the current thread and >>>> the connect() call did not use Qt::QueuedConnection, then it is >>>> "blocking". If you use Qt::DirectConnection or >>>> Qt::BlockingQueuedConnection then it is always "blocking". >>>> >>>> But if the receiver lives on another thread or if you specified >>>> Qt::QueuedConnection then the signal puts an object on the event loop >>>> and returns immediately. >>>> >>>> -- >>>> Lincoln Ramsay - Senior Software Engineer >>>> Qt Development Frameworks, Nokia - http://qt.nokia.com/ >>>> _______________________________________________ >>>> Interest mailing list >>>> Interest@qt-project.org >>>> http://lists.qt-project.org/mailman/listinfo/interest >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest