Qt: Возвращаемое значение сигнала работает, почему официальный документ говорит, что это невозможно / запрещено?
Документация 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:
Can Qt signals return a value? Qt: meaning of slot return value?Однако из моих испытаний (Qt 4.8.1) я могу сказать, что возвращаемые значения работают:
If signal / slot are in the same thread, ConnectionType may beQt::AutoConnection
With signal / slot in different threads I need to use Qt::BlockingQueuedConnection
Так что в моем коде я называю сигнал
QString dp = emit WscAircrafts::signalAircraftsJsonArray();
и сигнал МОК возвращаетQString
,
QString _t0;
void *_a[] = { const_cast<void*>(reinterpret_cast<const void*>(&_t0)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
return _t0;
Это слот МОК, где он проходит обратноQString
case 4: { QString _r = _t->slotAircraftJsonArray();
if (_a[0]) *reinterpret_cast< QString*>(_a[0]) = _r; } break;
Все это кажется довольно простым, так почему это противоречие с документацией? Где будет проблема с использованием возвращаемого значения? Как уже говорилось, в моем коде это, кажется, работает.