noch einmal slots...

Alles rund um die Programmierung mit Qt
Antworten
mine
Beiträge: 40
Registriert: 17. März 2009 09:44

noch einmal slots...

Beitrag von mine »

hallo!

dieses slot-signal konzept rall ich immer noch nicht - ich bekomme zwar eine connection, aber ich schaffe es nicht variablen zu übergeben. Trotz! google, wikipedia und diversen tutorials. hat jemand zufällig ein einfaches beispeil, in dem er einen knopf x erstellt, der beim click eine funktion y aufruft, die weiß, dass sie von X aufgerufen wurde??

das wäre schön!

danke!
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

1) Signale und Slots müssen die gleichen Parameter haben.
Das heißt: Wenn dein Signal clicked() des Buttons keine Parameter hat, darf der damit verbundene Slot auch keine Parameter haben. Dementsprechen kannst du so keine Werte übergeben.
2) Den "Absender" des Signals kriegst du mit der Funktion sender():

Code: Alles auswählen

int MyClass::init()
{
   connect(myButton, SIGNAL(clicked()), this, SLOT(mySlot());
}

void MyClass::mySlot()
{
   QPushButton* b = qobject_cast<QPushButton*>(sender());
   
   if (b && b == myButton)
     qDebug() << "my button was pressed";
}
3) Wozu willst du wissen, WELCHER button gedrückt wurde? Machs dir doch einfacher, und mache pro Button einen Slot. In der Regel willst du für einen Button doch eine bestimmte Aktion haben, und nicht 10 Knöpfe die (fast?) das gleiche tun.

Code: Alles auswählen

int MyClass::init()
{
   connect(myOpenButton, SIGNAL(clicked()), this, SLOT(myOpenSlot());
   connect(myCloseButton, SIGNAL(clicked()), this, SLOT(myCloseSlot());
}

void MyClass::myOpenSlot()
{
   open();
}

void MyClass::myCloseSlot()
{
   close();
}
mine
Beiträge: 40
Registriert: 17. März 2009 09:44

Beitrag von mine »

hallo! danke für die antwort - ich werde es gleich versuchen.

ein slot und ein button: ich habe ein button-array unbekannter länge...
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

QSignalMapper
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Oder du verwendest einen SignalMapper, dann kannst du auch andere Werte übergeben.
mine
Beiträge: 40
Registriert: 17. März 2009 09:44

Beitrag von mine »

danke, das mit dem knopf hat sehr gut gekklappt!
Antworten