Seite 1 von 1

Anfäger Problem: unterschiedlicher Return Wert beim Beenden

Verfasst: 4. März 2010 11:26
von 2Random
Hallo ihr,

wie kann ich in Abhänigkeit von Aktionen (z.B. Button wird gedrückt) unterschiedliche Return Werte zurückgeben? Das Programm soll beispielsweise bei Beenden 0 zurückgeben und bei Ok 1..

Habe mir quit und exit durchgelesen und auch ausprobiert, aber sowie ich das gemacht habe hat es nicht funktioniert...
http://doc.trolltech.com/4.3/qcoreapplication.html#quit
http://doc.trolltech.com/4.3/qcoreapplication.html#exit

Code: Alles auswählen

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    window.resize(400,200);

    // button 'ok' anlegen mit Text Ok, Kind von window
    QPushButton ok("&Ok", &window);
    // links 10, oben 40, 180 breit, 40 hoch
    ok.setGeometry(10, 40, 180, 40);

    QPushButton beenden("&Beenden", &window);
    beenden.setGeometry(200, 40, 180, 40);

    window.show();

    // beende mit Return 1
    QObject::connect(&ok, SIGNAL(clicked()), &app, SLOT(quit()));
    // beende mit Return 0
    QObject::connect(&beenden, SIGNAL(clicked()), &app, SLOT(quit()));

    return app.exec();
}

Verfasst: 4. März 2010 12:17
von upsala
Quit beendet immer mit 0
Bei Exit kannst du einen ReturnCode übergeben, standardmäßig ist er aber auch 0.

Verfasst: 4. März 2010 14:43
von 2Random
Aber bei folgendem wird das Programm nicht beendet... Es passiert nichts, bekomme aber auch keinen Compiler Fehler.
Object::connect(&ok, SIGNAL(clicked()), &app, SLOT(exit(10)));

Verfasst: 4. März 2010 16:46
von AuE
Jau....siehe Doku von Signal Slots
Das ist falsch du kannst da keine Werte mitgeben....

Aber: Schau dir mal den Signalmapper an ;-)

Verfasst: 4. März 2010 16:50
von drizzt
Object::connect(&ok, SIGNAL(clicked()), &app, SLOT(exit(10)));
also du kannst schon Werte mitgeben, aber nur, wenn Signal und Slot gleiche Parameter haben, z.B.

Signal: send(int)
Slot: receive(int) ... dann kannst du send(10) sagen und bei receive kommt 10 an.