[gelöst] Einpaar QAction mit ein SLOT verbinden

Alles rund um die Programmierung mit Qt
Antworten
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

[gelöst] Einpaar QAction mit ein SLOT verbinden

Beitrag 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? :roll: 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.
Zuletzt geändert von samir_bmw am 15. Juni 2010 12:45, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 ;)
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

Beitrag von samir_bmw »

Super, Super

Ich bedanke mich für die schnellen Antwort. :P Es hat mir sehr geholfen. Und mit 4 Vorschlegen.

DANKE.
Antworten