Ft: Der Rückgabewert des Signals funktioniert. Warum sagt das offizielle Dokument, dass dies unmöglich / verboten ist?
Qt Dokumentation sagt, Rückgabewerte von Signalen sind nicht möglich:
Signale werden vom MOC automatisch generiert und dürfen nicht in der CPP-Datei implementiert werden. Sie können niemals Rückgabetypen haben (d. H. Nichtig verwenden).
Verwandte SO-Fragen:
Können Qt-Signale einen Wert zurückgeben?Qt: Bedeutung des Slot-Rückgabewerts?Aus meinen Versuchen (Qt 4.8.1) kann ich jedoch entnehmen, dass Rückgabewerte funktionieren:
Wenn Signal / Steckplatz im selben Thread sind, kann ConnectionType seinQt::AutoConnection
Mit Signal / Slot in verschiedenen Threads muss ich verwendenQt::BlockingQueuedConnection
Also in meinem Code rufe ich ein Signal durch
QString dp = emit WscAircrafts::signalAircraftsJsonArray();
und das Signal moc gibt a zurückQString
,
QString _t0;
void *_a[] = { const_cast<void*>(reinterpret_cast<const void*>(&_t0)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
return _t0;
Das hier ist der Slot Moc, an dem er dieQString
case 4: { QString _r = _t->slotAircraftJsonArray();
if (_a[0]) *reinterpret_cast< QString*>(_a[0]) = _r; } break;
All dies scheint ziemlich einfach zu sein, warum also dieser Widerspruch mit der Dokumentation? Wo wäre das Problem mit dem Rückgabewert? Wie gesagt, in meinem Code scheint dies zu funktionieren.