Seite 1 von 1

Bei Signals und Slots Values übergeben

Verfasst: 2. Oktober 2007 14:44
von macpret
Hallo,

Ich wollte gerade meinen Code etwas optimieren und eine Vielzahl von Slots, welche alle zum Abspeichern von Werten zuständig sind reduzieren.

Dieses wollte ich machen indem ich nur noch einen Speicher-Slot anlege, welcher dann eine ID übergeben bekommt um dann die korrekten Werte abzuspeichern.

Leider kann ich diese ID nicht übergeben, denn sobald ich den Slot so anlege, dass er eine Eingabe hat, wird der Slot nicht mehr gefunden.

in der header-datei:

Code: Alles auswählen

void saveSlot(int);
in der cpp-datei:

Code: Alles auswählen

connect(m_action_Save_Everything, SIGNAL(triggered()), this, SLOT(saveSlot(1)));

Code: Alles auswählen

void DataWindow::saveSlot(int ID)
{
  if (ID == 0)
  {
     //blablubb
  }
  if (ID == 1)
  {
     //blablubb
  }
}
Ist es gar nicht möglich irgendwas noch mitzuschicken, oder ist dies lediglich auf eine andere Art und Weise möglich?

Vielen Dank
mac

Verfasst: 2. Oktober 2007 15:35
von macman

Verfasst: 2. Oktober 2007 17:47
von macpret
Frage: Geht es nicht "einfacher"?

Ich möchte doch nicht jeden Button, jeden Menü-Eintrag durch eine "Eigenkreation" erstetzen. :-/

Verfasst: 2. Oktober 2007 18:05
von CaptnChaos
hm, du kannst dein button auch per
void MyClass::MySlot()
{
QPushButton *pb = qobject_cast<QPushButton*>(sender());
if(pb->text() == "close")
qApp->quit();
}
bekommen

Verfasst: 2. Oktober 2007 18:22
von macpret
Also im Endeffekt im Slot prüfen, welcher Butten es war und dann dementsprechend reagieren. - Das wäre vom Umfang noch ok.

Mich wundert es allerdings dennoch, dass man beim Verbinden zwischen Signal und Slot nicht wie bei jeder Funktion einfach einen Parameter mit übergeben kann.

Aber erstmals vielen Dank. Werte es mal so ausprobieren.

Gruß
mac