В документации Qt сказано, что возврат значений сигналов невозможен:
Signals are automatically generated by the moc and must not be implemented in the.cpp file. They can never have return types (i.e. use void).
Связанные с SO вопросы:
Однако из моих испытаний (Qt 4.8.1 )я могу сказать, что возвращаемые значения работают:
Qt::AutoConnection
Qt::BlockingQueuedConnection
Итак, в моем коде я вызываю сигнал по
QString dp = emit WscAircrafts::signalAircraftsJsonArray();
и сигнал moc возвращает QString
,
QString _t0;
void *_a[] = { const_cast(reinterpret_cast(&_t0)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
return _t0;
Это слот moc, где он передает обратноQString
case 4: { QString _r = _t->slotAircraftJsonArray();
if (_a[0]) *reinterpret_cast< QString*>(_a[0]) = _r; } break;
Все это кажется довольно прямолинейным, так почему же это противоречие с документацией? В чем может быть проблема с использованием возвращаемого значения? Как я уже сказал, в моем коде это работает.