[Interest] Send signal from non-GUI thread
Bo Thorsen
bo at fioniasoftware.dk
Fri Oct 5 08:20:50 CEST 2012
Hi Kio,
You can use QCoreApplication::postEvent to do this from your thread. You
have to define a custom event for this, but that's not difficult.
It would have been simpler if the connect worked, but I'm afraid you
need a bit more effort :)
Bo.
Den 03-10-2012 12:43, Kio skrev:
> Hello,
>
> i'm trying to display a QMessageBox from a non-GUI thread. For this i use signal&slots:
>
> in a QMainWindow based object i defined the slot.
> In the sending object i defined the signal and in the c'tor i connect them.
> Then, from a background thread, i emit the signal.
> Connecting and emitting the signal is executed without error but the slot is never executed.
>
> Connect signal in c'tor:
>
>> connect(this,SIGNAL(showNewWarning(cstr)),parent,SLOT(showNewWarning(cstr)),Qt::QueuedConnection);
> Emit signal:
>
>> emit showNewWarning("Programme did not fit in ram.");
> I really think this should work.
>
>
> This is Qt 4.8 on Mac OSX.
> I have no custom event loop in the QApplication object.
> The background thread was not created by my application. It is an audio callback:
> This may be the reason for the failure, but then i need a workaround. :-/
>
> static OSStatus audioDeviceIOProc
> (
> AudioDeviceID /*inDevice*/,
> const AudioTimeStamp* /*inNow*/,
> const AudioBufferList* inInputData,
> const AudioTimeStamp* /*inInputTime*/,
> AudioBufferList* outOutputData,
> const AudioTimeStamp* inOutputTime,
> void* /*inClientData*/
> )
> { ... }
>
> Greetings from Germany,
>
> ... Kio !
>
--
Bo Thorsen.
Fionia Software - Qt experts for hire.
More information about the Interest
mailing list