Slot mit Parameter?

Alles rund um die Programmierung mit Qt
Antworten
leseratte_68
Beiträge: 10
Registriert: 16. September 2011 14:58

Slot mit Parameter?

Beitrag von leseratte_68 »

Ich habe folgendes Problem:

Für eine Liste von Buttons soll ein slot definiert werden, der aufgerufen wird, wenn einer dieser Buttons angeklickt wurde.
Diese Buttons sind von QPushButton abgeleitet

Code: Alles auswählen

class ColorButton : public QPushButton
{
       Q_OBJECT

       ...
Die Verknüpfung von Signals und Slot geschieht in einer Schleife

Code: Alles auswählen

void IDlgBase::ConnectSignals()
{
	std::map<ColorButton*, structAttrTriple<AttributeRgb> >::const_iterator	citColorButton;

	// set the colors to the original attributes
	for (citColorButton=m_mapColorButton.begin(); citColorButton!=m_mapColorButton.end(); citColorButton++)
		connect(citColorButton->first, SIGNAL(clicked(bool)), this, SLOT(onValueChanged()));
} // IDlgBase::ConnectSignals
Der Code funktionert problemlos, der Slot wird jedesmal aufgerufen, wenn einer der Buttons gedrückt wird.

Das Problem ist, das ich nun im Slot wissen muß, WELCHER Button das Ereignis aufgerufen hat. Gibt es eine Möglichkeit einen entsprechenden Parameter an den Slot mitzugeben, oder eine ander Möglichkiet?

Danke und Gruß
Andreas
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Slot mit Parameter?

Beitrag von solarix »

- die saubere Variante: "QSignalMapper"
- der "dirty-Hack": "sender()" im Slot.

hth..
leseratte_68
Beiträge: 10
Registriert: 16. September 2011 14:58

Re: Slot mit Parameter?

Beitrag von leseratte_68 »

Warum ist

Code: Alles auswählen

sender()
ein Dirty-Hack? Ist doch immerhin in der Dokumentation beschrieben!

...und danke für den Hinweis :D
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Slot mit Parameter?

Beitrag von solarix »

leseratte_68 hat geschrieben:warum ist ...ein Dirty-Hack? Ist doch immerhin in der Dokumentation beschrieben!
Auch das steht in der Doku (siehe Abschnitt "Warning") :wink:
ceumern
Beiträge: 28
Registriert: 16. September 2011 11:25

Re: Slot mit Parameter?

Beitrag von ceumern »

Noch besser als QSignalMapper:

QButtonGroup wurde genau dafür geschaffen:

http://doc.qt.nokia.com/latest/qbuttongroup.html
Antworten