[GELÖST] QApplication::exit() außerhalb der main-Funktion aufrufen



  • Hi zusammen!

    Ich steh im Moment total am Schlauch für ein vermeintlich einfaches Problem.
    Vielleicht macht man das auch gar nicht so, wie ich das gelöst habe.

    Ich bin dabei, ein Sudoku mit Qt zu programmieren, um mein logisches Denken wieder etwas anzukurbeln. Dazu habe ich die Klasse "Qudoku" erstellt. Darin befindet sich die Funktion CreateField(), in der die ganzen Eingabefelder und auch die Buttons erstellt werden. Das Problem ist, wie kann ich darin nun einen Button als Exitknopf verwenden? Das Problem zeigt sich glaube ich ganz gut in dem Codeabschnitt:

    check=new QPushButton("Check Qudoku >>",m_parent);
        ex=new QPushButton("Exit Qudoku",m_parent);
        connect(check,SIGNAL(clicked()),this,SLOT(CheckQudoku()));
        //Hier fehlt mir der Receiver (QApplication), der in der Klasse ja nicht bekannt ist.
        //Kann man den irgendwie aus der main Funktion übergeben?
        connect(ex,SIGNAL(clicked()),RECEIVER,SLOT(exit()));
    

    Ich hoffe, ihr wisst, was gemeint ist.

    mfg Langi



  • Du kannst auf die Instanz der QApplication über qApp überall in deiner Applikation zugreifen.
    Müsste dann wie folgt sein:

    connect(ex,SIGNAL(clicked()),RECEIVER,SLOT(quit()));
    


  • QApplication ist ein Singleton (auch wenn es sich anders anfühlt ;)). Du erhälts das Objekt via QApplication::instance(), wenn dir das zu lange ist, nimm qApp.
    Und "exit" ist kein SLOT sondern eine normale Funktion, die funktioniert nicht in dem connect. Nimm stattdessen quit.

    BTW.: Sudoku-Spiele sollte es schon viele geben. Ich mag gerne ksudoku. Wenn du dir das also nur schreiben willst, weil du gerne damit spielen willst, kannst du dir die Mühen sparen.



  • Ja, dass das ein Singleton ist, habe ich nach ein paar Minuten rumprobieren selbst herausgefunden 😃 Leider wusste ich dann keine Lösung mehr.

    Dass mit dem exit und quit hatte ich jetzt verwechselt, weil ich es länger nicht benutzt habe, habs geändert.

    Danke für den Tip mit qApp, war mir bislang noch unbekannt. Ich werd mir das gleich mal ansehen und probieren.
    Warum ich ein Sudoku schreibe? Nicht nur, um damit zu spielen. Es ist mein erstes richtiges Programm mit Qt. Es stellen sich nach und nach viele Aufgaben, also ganz gut, um sich mit der Materie vertraut zu machen. Außerdem kann man ein Sudoku immer erweitern und somit das mathematische Denken fördern 😉

    EDIT:

    Es funktioniert wirklich, super 🙂 Danke für die sehr flotte Hilfe!


Anmelden zum Antworten