Quelqu'un peut-il expliquer comment fonctionne une interface graphique et quand dois-je commencer à en utiliser une? [fermé]

16

J'apprends le C ++ depuis environ un mois maintenant, et avant d'aller plus loin, j'aimerais clarifier cette fastidieuse question que je continue de poser. Je sais ce qu'est une interface graphique, mais je ne sais pas vraiment comment cela fonctionne, et peut-être des exemples de populaires?

Bien que je sache que la programmation en ligne de commande n'est que le principe de base, je pense que ce serait amusant de jouer avec une interface graphique.

Bien que j'ai environ 3 millions d'autres questions, je vais les enregistrer: D

David
la source
1
la dernière ligne m'a fait sourire :) +1 pour ça
CyprUS

Réponses:

28

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 ( stdinen 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 best 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.

sebastiangeiger
la source
Si vous ajoutez un point-virgule à la fin de la définition de classe et rendez l'héritage public, ce serait la syntaxe C ++ appropriée / possible.
Lstor
1
Terminé. Mais je ne voulais pas susciter de fausses attentes, car le code ne sera pas exécutable après tout. La plupart de mon expérience est en Swing, ce qui se reflète probablement dans les noms de classe. Les mêmes concepts seront appelés différemment dans différents cadres.
sebastiangeiger
1
+1 Cela semble la seule réponse qui réponde à la question (pour moi, il semble qu'il ne demande pas seulement sur les cadres, il pose des questions sur les concepts généraux)
Federico klez Culloca
1
Ewwww .... merde d'auditeur laid.
DeadMG
7

Il est maintenant aussi bon que jamais d'apprendre le porgramming GUI. Comme vous le savez C ++, je recommanderais de regarder QT. Grande documentation, vaste base d'utilisateurs et beaucoup d'exemples / tutoriels disponibles pour apprendre.

mattnz
la source
1
+1 pour Qt - @David - Qt a son propre environnement de développement appelé Qt Creator qui est autonome, gratuit et relativement simple par rapport aux autres. Qt est puissant, intuitif, étendu, très bien documenté et avec une base d'utilisateurs large et active. Il est facile de commencer et il existe de nombreux exemples pour commencer à jouer et à faire votre propre chose - ce qui est une excellente façon d'apprendre en passant. Il peut être téléchargé ici
Roger Attrill
Je suis enclin à voter contre. QT encourage beaucoup de très mauvaises pratiques en C ++ si vous ne savez pas quoi rechercher. - Ce que vous ne faites pas, après seulement un mois de C ++. De plus, il touche à certains aspects complexes en C ++. Si possible, je commencerais d'abord la programmation GUI dans un autre langage et je me concentrerais sur le bon C ++.
Konrad Rudolph
3

Vous pouvez également commencer avec Microsoft Visual Studio C ++ Express . L'IDE est très convivial et facile à utiliser (et gratuit!), Et vous pourrez créer vos premières applications GUI très rapidement ... Ce qui vous aidera à vous concentrer sur la compréhension des bases de la programmation événementielle , une approche différente que vous devrez maîtriser.

Vous pouvez également commencer directement par la création d'applications pilotées par WPF, mais je commencerais par Windows Forms au début, c'est une technologie de moins à saisir car il s'agit simplement de C ++ de base avec l'API Windows Forms de Microsoft.

Jalayn
la source
1
Dans VC ++ Express, vous pouvez écrire une interface graphique avec: 1. Win32 API qui est très ancienne, encombrante et juste ridicule 2. MFC qui est un vieux tas de conneries 3. WTL qui est meilleur mais pas multiplateforme. 4. C ++ / CLI qui est impopulaire, mal supporté (même pas d'intellisense) et trop compliqué. Qt est plus facile, multiplateforme, possède un joli concepteur graphique et possède une grande quantité de classes non GUI utiles, ce qui est très important en C ++ avec sa petite bibliothèque standard.
Anton Barkovsky
0

Peut-être plus adapté à StackOverflow, étiqueté c ++; mais peu importe.

Regardez-en quelques-uns sur google; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...

Les interfaces graphiques ne sont pas si difficiles à utiliser, surtout une fois que vous connaissez déjà le c ++. Allez avec WxWidgets je pense; Qt est un peu trop complexe pour un mois d'apprentissage. Vous pouvez récupérer Wx en quelques heures.

Seb Holzapfel
la source
-1

Les utilisateurs n'aiment pas les choses compliquées. La console est une chose compliquée, c'est pourquoi vous devez créer des applications GUI plus conviviales et faciles à comprendre. C'est la raison la plus évidente que je vois. Vous pouvez regarder gtk ou Qt - ces deux-là sont les plus populaires.

Sergey
la source
2
CLI n'est pas compliqué et les GUI par définition sont PLUS compliqués pour l'utilisateur. Ils sont plus accessibles non moins compliqués.
Ominus