Seite 1 von 1
Qt4: Was kann man im Slot beim connect string verwenden
Verfasst: 15. Dezember 2006 22:48
von joebar
Hallo,
ich hatte mal folgendes probiert:
Code: Alles auswählen
connect(actionA,SIGNAL (triggered()), this, SLOT(stackedWidget -> setCurrentIndex(1)));
Was aber nicht funktioniert, wenn ich es so mache klappts:
Code: Alles auswählen
connect(actionA,SIGNAL (triggered()), this, SLOT(page_sub()));
void testapp::page_sub(){
stackedWidget -> setCurrentIndex(1);
return;
}
Also compiling klappt, aber es tut einfach nichts wenn das Signal (ist eine Menu Auswahl) gerufen wird. Die Doku
http://doc.trolltech.com/4.1/signalsandslots.html sagt mir nur dass slots normale C++ Funktionen sind, okay ich rufe hier die Funktion einer Klasse auf, aber das sollte doch nichts machen, oder? Insbesondere kann ich den Code ja uebersetzen, nur der Befehl wird ja nicht ausgefuehrt.
Geht das wirklich nicht, oder sehe ich den Wald vor laeuter Baeumen mal wieder nicht?
Danke,
J.
Verfasst: 15. Dezember 2006 23:09
von Christian81
Code: Alles auswählen
connect(actionA,SIGNAL (triggered()), this, SLOT(stackedWidget -> setCurrentIndex(1)));
kann nicht funktionieren da man keine Parameter übergeben kann
und beim zweiten Beispiel wird dir ggf. während der Laufzeit ein Fehler ausgegeben (unter Windows: config += console nicht vergessen - sieh qmake Doku)
Ein Compilerfehler wirst du beim connect() nie bekommen da dies alles erst zur Laufzeit geschieht (das ist ja der Vorteil der signals & slots)
Verfasst: 16. Dezember 2006 01:38
von joebar
Hallo Christian,
das mit dem Config hat mir verwirrt. Ich entwickle unter Linux, waere natuerlich auch schoen wenn mein Programm auch hinterher unter Win laeuft. Die Doku
http://web.mit.edu/qt/www/qmake-manual-8.html sagt zu dem "console - The target is a Win32 console application... ". Ich nehme also an, dass ich unter Linux diesen Zusatz nicht brauche, aber brauche ich ihn unter Win? "console application" wuerde ich mal mit Kommandozeilen Tool uebersetzen, und dass habe ich ja nicht. Wo siehst du hier das Problem?
Was ggf. Laufzeitfehler angeht, bezieht sich das auch auf diese config Geschichte oder wo siehst du (noch) moegliche Laufzeit Fehler?
Aber kommen wir wieder zu dem eigentlichen Problem. Also, dass ich keine Parameter mitgeben kann lese ich in der Doku nicht "Slots are normal C++ functions and can be called normally". Insbesondere findet man im oben angegeben Link folgendes
Code: Alles auswählen
QObject::connect(&a, SIGNAL(valueChanged(int)),&b, SLOT(setValue(int)));
Hier wird doch auch ein Parameter uebergeben - okay der vom Signal. Meiner ist sogar fix fuer alle aufrufe. Muss ich also wirklich fuer den Seitenwechsel eine Funktion bauen die nur ein Kommando enthaelt?
Danke,
J.
Verfasst: 16. Dezember 2006 09:04
von upsala
Hier wird doch auch ein Parameter uebergeben - okay der vom Signal. Meiner ist sogar fix fuer alle aufrufe. Muss ich also wirklich fuer den Seitenwechsel eine Funktion bauen die nur ein Kommando enthaelt?
Ja, must du. Aber was stört dich daran? Das sind 3 Zeilen Code. Für diese Frage im Forum hast du schon mehr geschrieben...