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!
noch einmal slots...
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():
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.
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";
}
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();
}