Wie kann ich die gedrückt () Signal von 32 Tasten auf eine einzige Funktion verbinden, ohne 32 Slots zu deklarieren?

StackOverflow https://stackoverflow.com/questions/1801167

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe ein Widget und im Inneren sind 32 Tasten. Ich brauche jeden Schaltfläche gedrückt () Signal an einen Schlitz zu verbinden, um eine Funktion aufzurufen, die Parameter ist davon abhängig, welche Taste ich gedrückt haben. Im Moment habe ich die 32 Slots in Form von on_QPushButtonName_pressed durch Zugabe von () aber das ist eine Menge Slots. Ich frage mich, ob es eine andere Möglichkeit, die ich tun könnte es, das kleiner ist. Ich habe etwas getan, ähnlich, aber ich arbeite mit benutzerdefinierten Widgets, so konnte ich nur ein neues Signal in dem Code meiner Klasse erstellen, aber ich würde ein eigenes Widget für nur einen einzigen Knopf zu vermeiden, wie zu schaffen.

War es hilfreich?

Lösung

Mit der QSignalMapper Klasse. Die Dokumentation - http://doc.qt.io/qt-5/qsignalmapper.html - hat ein Beispiel ziemlich nah an, was Sie wollen

.

Andere Tipps

Eine andere Möglichkeit:. Nur einen Slot zu schaffen, ruft sender() und Einschalten des Ergebnis

Als Rohan erwähnt, ist QSignalMapper die empfohlene Lösung, da Sender () ist ein bisschen wie ein Hack. Sein Vorteil ist, dass es einfacher zu bedienen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top