Qt: Rückgabewert des Signals funktioniert, warum sagt der offizielle Arzt, dass es unmöglich / verboten ist?

8

Qt-Dokumentation sagt, Rückgabewerte von Signalen sind nicht möglich:

  

Signale werden automatisch vom Moc erzeugt und dürfen nicht sein   in der CPP-Datei implementiert. Sie können niemals Rückgabetypen haben (d. H.   Verwenden Sie void).

Verwandte SO-Fragen:

  1. Können Qt-Signale einen Wert zurückgeben?
  2. Qt: Bedeutung des Slot-Rückgabewerts?

Aus meinen Versuchen (Qt 4.8.1) kann ich jedoch sagen, dass die Rückgabewerte funktionieren:

  1. Wenn sich Signal / Slot im selben Thread befinden, kann ConnectionType Qt::AutoConnection sein.
  2. Bei Signal / Slot in verschiedenen Threads muss ich Qt::BlockingQueuedConnection verwenden

Also in meinem Code rufe ich ein Signal an

%Vor%

und das Signal moc gibt eine QString ,

zurück %Vor%

Hier ist der Slot-Moc, wo er die QString

zurückgibt %Vor%

All das scheint ziemlich geradlinig zu sein, warum also dieser Widerspruch mit der Dokumentation? Wo wäre das Problem mit dem Rückgabewert? Wie gesagt, in meinem Code scheint das zu funktionieren.

    
Horst Walter 09.08.2012, 19:32
quelle

1 Antwort

5

Das Problem besteht darin, dass die Rückgabetypen bei der Verbindungszeit nicht auf Kompatibilität geprüft werden, so dass zum Beispiel ein doppelt zurückkehrender Slot mit einem float-returning-Signal verbunden wird schweben.

    
Marc Mutz - mmutz 10.09.2013, 14:05
quelle

Tags und Links