Ich verallgemeinere einige GUI-Bibliotheken, aber auf einer sehr hohen Ebene ist das wichtigste Konzept, das Sie verstehen müssen, dass eine GUI ereignisgesteuert ist .
In einer Konsolenanwendung erfolgt Ihre Benutzereingabe normalerweise an bestimmten Punkten, die Sie definiert haben. Sie fordern Ihren Benutzer auf, Sie warten auf seine Eingabe, Sie berechnen etwas basierend auf dieser Eingabe. Einer der Hauptunterschiede ist, dass die Eingabe nur an einer Stelle erfolgt, Sie lesen Text von der Kommandozeile ( stdin
in C ++).
In einer GUI-Anwendung haben Sie normalerweise mehrere Orte, an denen Eingaben erfolgen können, z. B. Schaltflächen, die unterschiedliche Aktionen oder Textfelder ausführen. Hier kommen Ereignisse ins Spiel. Wenn Sie beispielsweise auf eine Schaltfläche klicken, wird ein Ereignis ausgelöst. Dieses Ereignis muss von einem Ereignishandler behandelt werden. Dies ist normalerweise nur eine Methode, die ein Ereignisobjekt aufnimmt und aufgerufen wird, wenn ein solches Ereignis ausgelöst wird. Woher weiß Ihre Schaltfläche über den Ereignishandler? Du abonnierst normalerweise (oder hörst es dir an).
Hier ist ein "C ++ inspiriertes" Beispiel, dies ist kein tatsächlicher QT- oder C ++ - Code.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Wenn Sie den Button erstellen, registrieren Sie eine Instanz der MyClickHandler-Klasse für den Button.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Jetzt wird jedes Mal, wenn auf den Button b
geklickt wird, eine Meldung angezeigt, die besagt, dass auf den Button Speichern geklickt wurde.
Sie können sich vorstellen, dass eine GUI-Anwendung zwei Phasen hat:
- GUI einrichten: Eine kurze Zeit beim Start, in der alle Objekte erstellt und miteinander verbunden werden.
- Die Ereignisschleife : Ihre GUI befindet sich in einer großen while-Schleife und befindet sich nur im Leerlauf, bis ein Ereignis ausgelöst wird.
Dies ist ein sehr einfaches Beispiel, aber ich würde empfehlen, mit jedem Framework, das Sie auswählen, ein Meldungsfeld anzuzeigen, wenn Sie auf eine Schaltfläche klicken.
Für das Framework gibt es viele: Im Falle von C ++ würde ich Qt wahrscheinlich empfehlen.
Ein letzter Ratschlag: Halten Sie sich von GUI-Designern fern, bis Sie wirklich wissen, was im Hintergrund passiert. Es ist nicht so schwer, einige einfache Beispiele zu schreiben und die Ereignisschleife zuerst zu verstehen und dann zu komplexeren Layouts überzugehen.