Qt::UniqueConnection (Signals & Slots) ... wieso sollte ich was anderes wollen?



  • Hi,

    ich frage mich gerade in welchen Fällen es Sinn ergeben könnte ein und das selbe Signal mehrmals abfangen zu wollen. Wieso sollte ich also nicht jedes Signal unique connecten?

    Ich meine, wenn ich mich für irgendein Ereignis interessiere, möchte ich dafür Sorge tragen dass ich auch darüber informiert werde. Ergo: Ich "registriere" ich mich dafür. Damit ist sichergestellt dass ich auch informiert werde sobald dass Ereignis eintritt. Die Welt ist nun in Ordnung.

    Aus welchem Grund sollte ich mich ein zweites Mal anmelden? Weil das einzigste was ich davon hätte wäre sozusagen "Spam". Ich bekomme dieselbe information (100% die selbe) einfach doppelt, der Informationsgewinn der zweiten Connection liegt meiner Meinung nach sowieso bei 0.

    Nachteilig wäre beispielsweise dass ich beim 2ten Empfang des Signals auf "teure" Art und Weise (Traffic, Zugriffe, Rechenleistung, etc.) auf eine Änderung reagiere obwohl ich meine Applikation schon nach dem ersten Signal in einen konstistenten Zustand überführt habe. (Also in dem Momenent auch keien Änderung mehr darstellt)

    Was haltet ihr davon? Für mich ergibt es momentan absolut keinen Sinn mehrfache connections zu erzeugen, das Resultat wäre imo reiner Overheat. Besonders verwunderlich finde ich es dass es die Option erst seit 4.6.0 gibt, was ja recht neu ist. Daraus könnte man fast schliessen das der Unique connect eher die Ausnahme ist.

    Danke für eure Meinungen, ich kann mir keinen Reim darauf bilden.

    Ich kann mir vorstellen, und das ist wohl wahrscheinlich, dass es sich auf das Verhalten von Signals und Slots bei der Verwendung von mehreren Threads bezieht. Falls dem so sein sollte, wäre es hammergeil wenn ich dabei Hilfe bekäme, mir ein Szenario vorzustellen in dem ein "Multi-Connect" Sinnvoll sein könnte.

    Grey



  • Ein Signal von einer Modelklasse möchte man gern mit allen Views connecten können

    Es gibt viele Fälle, wo es Sinn macht, ein Signal völlig unabhängig voneinander an unterschiedlichen Stellen wieder aufzufangen.
    Oft wissen die betroffenen Klassen nichtmal was voneinander und ein sequentieller Aufruf wäre nicht möglich

    -Edit-

    ok, habs mir nochmal angesehen, da ich von der UniqueConnection bis eben nichts gewusst habe

    Es kann, vor allem wenn man autoconnects verwendet, mitunter vorkommen, dass ein Signal doppelt ankommt. Kann mitunter auch durchaus gewollt sein. Falls nicht, musst man bisher aufpassen, dass man nicht versehentlich doppelt verknüpft hat, oder jetzt eben die UniqueConnection verwenden.

    Aber nein, mir fällt grad kein Anwendungsfall für mehrfach-connects ein


Anmelden zum Antworten