Je généralise sur quelques bibliothèques d'interfaces graphiques, mais à un très haut niveau, le concept le plus important que vous devez comprendre est qu'une interface graphique est pilotée par les événements .
Dans une application console, votre entrée utilisateur se produit généralement à certains points que vous avez définis. Vous invitez votre utilisateur, vous attendez son entrée, vous calculez quelque chose en fonction de cette entrée. L'une des principales différences est que l'entrée ne se produit qu'à un seul endroit, vous lisez du texte à partir de la ligne de commande ( stdin
en C ++).
Dans une application GUI, vous avez généralement plusieurs endroits où la saisie peut avoir lieu, par exemple des boutons qui effectuent différentes actions ou des champs de texte. C'est là que les événements entrent en jeu. Par exemple, cliquer sur un bouton déclenche un événement. Cet événement doit être géré par un gestionnaire d'événements , qui n'est généralement qu'une méthode qui prend un objet événement et est appelé lorsqu'un tel événement est déclenché. Comment votre bouton connaît-il le gestionnaire d'événements? Vous vous abonnez généralement (ou écoutez- le).
Voici un exemple "inspiré de C ++", ce n'est pas du code QT ou C ++ réel.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Lorsque vous créez le Button, vous enregistrez une instance de la classe MyClickHandler contre le bouton.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Maintenant, chaque fois que le bouton b
est cliqué, une boîte de message s'affiche en disant "Le bouton Enregistrer a été cliqué".
Vous pouvez imaginer qu'une application GUI comporte deux étapes:
- Établir l'interface graphique: une courte période au démarrage, où tous les objets sont créés et connectés les uns aux autres.
- La boucle d'événement : votre interface graphique est dans une grande boucle while et est juste assise là au ralenti jusqu'à ce qu'un événement se déclenche.
Ceci est un exemple très simple, mais je recommanderais, quel que soit le cadre que vous choisissez, d'afficher une boîte de message lorsqu'un bouton est cliqué.
Pour le framework, il y en a beaucoup: dans le cas de C ++, je recommanderais probablement Qt.
Un dernier conseil: éloignez-vous des concepteurs d'interface graphique jusqu'à ce que vous sachiez vraiment ce qui se passe en arrière-plan. Il n'est pas si difficile d'écrire quelques exemples simples et de comprendre d'abord la boucle d'événements, puis de passer à des dispositions plus complexes.