Seite 1 von 1
[gelöst] Einpaar QAction mit ein SLOT verbinden
Verfasst: 15. Juni 2010 11:26
von samir_bmw
Hallo Zusammen,
ich habe ein kleines Problemschen.

Das Szenario: 4 mal
QAction die zur ein
SLOT verbunden sind mit
connect(startAction, SIGNAL(triggered()), this, SLOT(testSlot())). Wie kann ich verstehen, welche
QAction den
SLOT gerufen hat?

Mit dem SIGNAL triggered() kann ich kein Argument senden. Ich habe es so ausprobiert
connect(startAction, SIGNAL(triggered()), this, SIGNAL(testSignal(int, int))) ging nicht. Ich weiss es sieht dumm aus, ohne schweiss kein preis, einfach getestet. Und ich will nicht für jeder QAction ein Slot deklarieren.
Für jeder Vorschlag ich bin dankbar.
Verfasst: 15. Juni 2010 11:38
von franzf
1) sender(), oder besser
2) QSignalMapper.
3) Noch besser: eigene Slots pro action, auch wenn du eigene Methoden deklarieren musst. Wenn du Angst wegen Codeduplizierung hast, kannst du ja auch einfach entsprechenden Code in eine eigene Funktion auslagern.
4) Oder du schreibst dir eine Funktion "testSlotImpl(int,int)", in der du je nach Parameter andere Sachen machst, dann machst du pro action einen SLOT, in dem du dann testSlotImpl aufrufst, mit den passenden Parametern.
Ich rate zu 3), da hier am besten erweitert werden kann. Wenn dein Programm wächst und neue Actions dazu kommen, musst du immer schauen, wie du das jetzt in deine eine SLOT-Methode integrierst. Das wird unübersichtlich und fehleranfällig. Außerdem ist es schlechtes Design

Verfasst: 15. Juni 2010 12:21
von samir_bmw
Super, Super
Ich bedanke mich für die schnellen Antwort.

Es hat mir sehr geholfen. Und mit 4 Vorschlegen.
DANKE.