Anfäger Problem: unterschiedlicher Return Wert beim Beenden

Alles rund um die Programmierung mit Qt
Antworten
2Random
Beiträge: 2
Registriert: 4. März 2010 10:37

Anfäger Problem: unterschiedlicher Return Wert beim Beenden

Beitrag 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();
}
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Quit beendet immer mit 0
Bei Exit kannst du einen ReturnCode übergeben, standardmäßig ist er aber auch 0.
2Random
Beiträge: 2
Registriert: 4. März 2010 10:37

Beitrag 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)));
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Jau....siehe Doku von Signal Slots
Das ist falsch du kannst da keine Werte mitgeben....

Aber: Schau dir mal den Signalmapper an ;-)
drizzt
Beiträge: 29
Registriert: 9. Oktober 2009 13:37

Beitrag 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.
Antworten