[Interest] Signal with QString argument from another thread.

Igor Mironchik igor.mironchik at gmail.com
Tue Oct 6 22:54:30 CEST 2015



On 06.10.2015 23:24, Thiago Macieira wrote:
> On Tuesday 06 October 2015 19:43:03 Igor Mironchik wrote:
>> Hi guys,
>>
>> Is it safe to use QString argument in queued slot when signal emitted
>> from another thread?
>>
>> void mySignal( QString arg );
>> void mySlot( QString arg );
> Yes. All arguments passed by value or by const-ref are copied into the event
> that gets posted to the other thread.
>
> And QString, like other Qt value classes, should be treated like an int.
> You're not asking that question about an int argument, so you shouldn't have
> to ask about a QString argument.

Not sure that I understood you correctly...

If I pass argument to the signal by const-ref and signal posted to 
another thread then data will be fully copied? Or just a const-ref will 
be initialized in the event? And what will be if signal and slot in one 
thread? Will be data copied fully too or signal will just invoke slot 
and pass him const-ref?

Thank you.

>
>> The same question if argument will be const QString & and argument to
>> signal passed as temporary object, like this:
>>
>> void mySignal( const QString & arg );
>>
>> emit mySignal( QLatin1String( "Hello!!!" ) ); // emitted from another
>> thread, different from GUI thread...
>>
>> void mySlot( const QString & arg ); // Live in GUI thread...
> As explained above.
>

-- 
Best Regards,
Igor Mironchik.




More information about the Interest mailing list