l'asile.fr


Programmation événementielle 1 : Introduction à Qt

article de Def , publié le 22 mars 2006 à 18:50
Vous ne savez pas comment perdre votre précieux temps de glande sur Internet ? Envie de faire quelque chose de plus utile que du plop en série sur la tribune ? L'algorithmique n'a pas fait de vous un objet de désir du sexe opposé ?

Il ne reste qu'une chose à faire pour combler tous ces désirs : la programmation événementielle !
Tout d'abord, mais qu'est-ce que la programmation événementielle ?

Evolution de la programmation procédurale que l'on utilise pour les applications en mode console, la programmation événementielle nous est utile pour faire des applications avec des interfaces graphiques.

- Ça va me permettre de faire des jolies fenêtres avec le joli thème Luna sous Windows ?
- T'as des goûts de chiottes mais t'as compris le principe.

Nous aurons donc différents composants graphiques disposés dans une ou plusieurs fenêtres et nous répondrons aux événements de l'utilisateur comme clics ou entrées au clavier. D'où le nom de programmation événementielle également appelée programmation Windows.

De quoi avons-nous besoin ?

- D'un langage de prog, on s'en serait douté : j'ai choisi pour vous C++
- D'un IDE (Integrated Development Environment) : c'est un programme regroupant la plupart des outils nécessaires au développement d'une application. Au minimum il doit contenir un éditeur de texte et un compilateur mais il peut très bien avoir des modules en plus tel qu'un débugger. Ce sera Devcpp.
- D'un compilateur : MinGW.
- D'un toolkit : pas besoin de chercher trop loin, la traduction correspond bien à ce que c'est. C'est une boite à outils, dans le sens informatique on pourrait dire une bibliothèque de fonctions servant, dans notre cas, au développement d'interfaces graphiques. On peut citer AWT (Abstract Window Toolkit) servant à faire des interfaces graphiques en Java, mais pour ne pas trop se casser la tête on utilisera Qt.
- Et finalement, le point qui va me faire perdre 98% de mes lecteurs, des connaissances de bases en C++ et en programmation orientée objet.

Pourquoi Devcpp alors que c'est quand même pas top, non ?

Je suis d'accord, CodeBlocks est nettement mieux mais, la dernière fois que j'ai regardé, son support de Qt était, pour être poli, expérimental. On devra donc se contenter d'un Devcpp lent, plantant et pas top mais qui conviendra quand même très bien pour ce que nous allons faire. En plus ça va m'offrir la possibilité d'un nouvel article si un jour j'arrive à faire cohabiter CodeBlocks et Qt.

Ouais mais Qt finalement, c'est quoi ?

Pour faire simple c'est un ensemble de bibliothèque C++ contenant tout ce qui va nous être nécessaire pour développer des interfaces graphiques. Si la motivation reste avec moi et que je continue ce qui devrait être une série d'articles, on pourra voir qu'en fait on peut faire beaucoup plus mais on ne va pas se brouiller la tête avec ça maintenant.

Pourquoi Qt ?

Principalement parce que je connais pas trop mal, et en plus il ne manque pas d'arguments :
- gratuit
- open source
- excellente documentation
- multiplateforme
- et, plus subjectif, très bien fichu


Téléchargeons donc tout ce bordel !

Devcpp, Qt et, puisque je suis très gentil, des petits fichiers que j'ai eu au péril de ma vie pour simplifier la votre.
Et le compilateur on me demandera ? Il va se télécharger pendant l'installation de Qt, magique.


La partie chiante : l'installation

Installation de Devcpp

Là je vais vous faire confiance pour l'installer et si vous doutez vraiment, l'installation par défaut est parfaite. On n'oubliera pas de décompresser le fichier utils.rar comme suit :
- qtmakefile.bat dans Dev-cpp/bin
- qtnewdev.exe dans le dossier de Devcpp

Installation de Qt

On va gentiment suivre l'assistant jusqu'à arriver au moment où il nous propose de télécharger et installer MinGW :



Et c'est là qu'il ne faut pas faire la même erreur que moi. Il faut installer MinGW dans le répertoire de Devcpp pour que tout le monde soit heureux. On continue l'installation en lui laissant créer les variables d'environnement pour ne pas avoir à le faire à la main :



L'installation terminée, il nous reste à construire les bibliothèques de débuggage de Qt. Le nom fait peur hein ?
Plus de peur que de mal, l'ami Qt fait tout pour nous :



Cette étape peut facilement durer de 15 à 20 minutes. Une fois terminée :



On ferme la commande Dos, l'installation est faite et on peut passer à la configuration.

La configuration

Première étape : ajouter une variable d'environnement. Pour cela, on ouvre les propriétés systèmes (clic droit -> propriétés sur le poste de travail ou le raccourci windows + break) -> avancé -> variables d'environnement. On localise la variable path, et on y ajoute à la fin le dossier Bin de Bevcpp en n'oubliant pas le point virgule pour le séparer du précédant chemin :



Dernière étape avant d'être fin prêt à programmer, l'ajout d'un outil pour générer le makefile.
Le makequoi ?
Pour faire très simple, c'est un fichier qui va être utilisé par l'IDE pour appeler les différents programmes (compiler, linker, meta object compiler,...) nécessaires à la création de notre exécutable. A chaque ajout d'un fichier source dans notre projet, on devra recréer un nouveau makefile.
Il est possible de configurer Devcpp pour qu'il s'en charge mais j'utilise personnellement une autre approche. Je crée un nouvel outil dans Devcpp et je l'utilise après l'ajout d'un nouveau fichier. C'est très simple à faire :
Dans Devcpp, menu tools -> configure tools -> add et on va remplir tous les champs comme indiqué :



J'explique un peu ce que l'on vient de faire. Le titre je pense que c'est assez clair, "Program" on lui indique le fichier .bat qui était dans utils.rar que je vous ai fait mettre dans le dossier bin de Devcpp, et enfin "working directory" on pourra le remplir avec la macro <PROJECTPATH> disponible en bas à gauche.
On ferme tout ça et on peut remarquer que Qt Makefile est apparu dans le menu Tools.

La configuration est enfin terminée !

Créons notre 1er projet !

Passons à un peu de pratique après toutes ces étapes ennuyeuses. Vous vous souvenez du fichier QtNewDev.exe que je vous ai fait mettre dans le dossier de Devcpp ? C'est le moment de le lancer.
Il va nous demander d'indiquer où l'on veut créer notre projet. Une fois que c'est fait, on va aller dans le dossier fraîchement créé et ouvrir le fichier .dev qu'il contient.
Devcpp se lance et on va lui demander très gentiment de lancer la compilation avec le bouton compile en haut à gauche.

- Mais... ça compile pas du tout bordel !
- Et le makefile hein ?

Donc on va faire notre makefile, Tools -> Qt Makefile, on compile et... ça fonctionne !
Une fois notre projet compilé, on le lance (run juste à côté de compile) et on regarde, l'oeil humide, notre 1ère fenêtre créée avec Qt.

Je sais qu'à ce niveau vous ne pouvez pas faire grand chose de plus que vous n'étiez capable il y a quelques minutes mais je vais m'arrêter là pour cette introduction. Un article va venir très prochainement, je vais le commencer de suite, pour attaquer en douceur les différentes possibilités que nous offre Qt.

Compléments de l'article

Devcpp, Qt


article de Def — publié le 22 mars 2006 à 18:50
Lien permanent vers cet article | Aller sur le blog de Def
Oui Non

Avez-vous trouvé cet article intéressant ?

Écrire un article
Ellendhel
#1 gnagnagna

Ah tiens je vais suivre ça d'un oeil avisé.

Pour le moment la seule bibliothèque graphique que je connais (c'est un grand mot) c'est fltk. Qui fait à peu près ce que je veux mais qui est tout de même assez frustre niveau look (enfin avec la vieille verson 1.x que j'utilise).


mercredi
22 mars 2006, 19:00
 
 

gwendal
#2 Détourageophile

Installé et prêt pour la suite.
Merci


- les fautes
mercredi
22 mars 2006, 20:51
 
 

Ceacy
#3 Me, Myself and I

Ellendhel > Essayé wxWidgets (alias wxWindows) ?


mercredi
22 mars 2006, 21:50
 
 

JiHeM
#4 Captain Obvious

L'API Win32 possède déjà le nécessaire pour créer une fenêtre : fonction CreateWindow(), structure WNDCLASSEX... pourrais-tu expliquer l'avantage de passer par une bibliothèque externe comme Qt pour réaliser ça ?


mercredi
22 mars 2006, 22:10
 
 

gwendal a écrit :Installé et prêt pour la suite.
Merci


Tu n'as eu aucun problème pour installer ? Mes explications sont assez claires ?
La suite arrive, je rédige.


mercredi
22 mars 2006, 22:11
 
 

JiHeM a écrit :L'API Win32 possède déjà le nécessaire pour créer une fenêtre : fonction CreateWindow(), structure WNDCLASSEX... pourrais-tu expliquer l'avantage de passer par une bibliothèque externe comme Qt pour réaliser ça ?


Les avantages sont assez nombreux. Multiplateforme ce qui est plutôt pas mal à notre époque, objet (je me trompe peut-être mais il me semble que l'API win32 n'est pas objet, donc niveau réutilisabilité (on me dit que le mot n'existe pas mais j'en trouve pas d'autre :) c'est pas top) et je dirais surtout la simplicité. Je n'ai jamais vraiment utilisé à fond l'API win32 mais pour le peu que j'en ai fait je suis très loin d'être tombé sous le charme.
C'est probablement une question d'habitude mais s'il y a du monde qui connait bien l'API win32 et qui veulent suivre mes guides je serais très intéressé par avoir leur avis par la suite.


mercredi
22 mars 2006, 22:21
 
 

JiHeM
#7 Captain Obvious

Je suis loin d'être assez connaisseur, j'ai juste acquis récemment un bouquin sur la réalisation de jeux 2D en programmation événementielle C++ / API Win32 (celui-là), mais j'avoue être assez noob en la matière, c'est pour ça que je demandais. C'est vrai que win32 pour la portabilité... en revanche elle est bien orientée objet. Merci de tes précisions, et pour l'article aussi, dès le prochain je testerai, il y aura plus de concret :)


mercredi
22 mars 2006, 22:40
 
 

J'avoue que je ne connais pas vraiment les fonctions "avancées" (animation) de Qt en 2D. Mon plus gros projet pour l'instant est un jeu de plateau (hop un vieux screenshot, c'est un peu le bordel avec 4 clients sur la même machine et faut pas fait attention au texte, je testais le chat) et mes connaissances se limitent un peu à ça. Manipulation d'images, dessins 2D,...


mercredi
22 mars 2006, 22:49
 
 

JiHeM
#9 Captain Obvious

Tiens le djambi... j'avais lu un article sur ce jeu sur le blog de Boulet, mais j'ai jamais eu l'occasion d'essayer.


mercredi
22 mars 2006, 23:05
 
 

Ellendhel
#10 gnagnagna

@Ceacy > non mais il faudrait que je jette un oeil.

Et déjà, jetter un oeil (l'autre) sur CodeBlocks.

Tout ça pour donner cours à mes z'étudiantes, vu que je ne suis pas programmeur pour deux sous.

J'ai jetté un oeil sur Visual C++ Express (ou un nom du même genre) mais un logiciel qui prends plusieurs centaines de méga-octets pour faire quelques tp de C / C++ c'est une technique de rouleau compresseur.


mercredi
22 mars 2006, 23:35
 
 

2ème article terminé, je me relis demain pour pas me faire fusiller par les admins et je le propose.


jeudi
23 mars 2006, 00:42
 
 

La programmation événementielle, ou comment créer des génération de psychopathes épilleptiques grace à une interface qui joue au sapin de noël...

Sinon chapeau bas il fallait oser l'idée, en partant du principe qu'il existe des gens très bien qui ne connaissent absolument rien de la programmation, ça va provoquer des surchauffes chez certains.


jeudi
23 mars 2006, 02:19
 
 

gwendal
#13 Détourageophile

Def a écrit :
gwendal a écrit :Installé et prêt pour la suite.
Merci


Tu n'as eu aucun problème pour installer ? Mes explications sont assez claires ?
La suite arrive, je rédige.


Non pas de problème, mais il faut bien dire que je suis particulièrement doué :)


- les fautes
jeudi
23 mars 2006, 08:45
 
 

Sarki a écrit :Sinon chapeau bas il fallait oser l'idée, en partant du principe qu'il existe des gens très bien qui ne connaissent absolument rien de la programmation, ça va provoquer des surchauffes chez certains.


De même chez ceux qui viennent sur l-asile pour se détendre et qui tombent sur des articles qui parlent de leur boulot. C'est un COMPLOT ! ON VEUT QUE JE BOSSE OU QUOI ?!?


jeudi
23 mars 2006, 12:07
 
 

Ceacy
#15 Me, Myself and I

ADN a écrit :C'est un COMPLOT ! ON VEUT QUE JE BOSSE OU QUOI ?!?

Ta gueule, et mets-toi au boulot. Plus vite que ça !


jeudi
23 mars 2006, 17:28
 
 


Ajouter un commentaire

Vous devez être identifié pour poster un commentaire.

# 19:44:26
(hohun) 15:24:24 et pas un bobo, franchement les gamins sont en mousse
# 15:24:24
(carwin) Ma région a du talent [url]
# 22:25:52
(plantmann) Sinon depuis quelques jours, j'ai attaqué X-com 2 : ben j'aime bien. Il est dur, mais pas injuste, et il est facile à prendre en main.
# 22:24:24
(plantmann) J'ai lâché à la mission dans le quartier englouti, on basculait trop de l'infiltration à l'action à mon goût (et moi j'aime surtout le côté "puzzle" de l'infiltration)
# 22:23:39
(plantmann) J'ai pas joué à Thief (j'en avais pourtant entendu plutôt du bien, mais il date effectivement) mais Dishonored m'a beaucoup plu, même si je ne l'ai pas fini
# 14:51:37
(Akshell) ça ne marche pas du tout.
# 14:51:27
(Akshell) ils ont voulu créer un "body awareness", le mouvement effectué s'adapte à la positon du perso, mais ce n'est pas très bien géré, tu te mets à couvert quand tu veux dash dans une ombre, tu te retrouve bloqué quand tu veux sauter dans le vide.
# 12:01:49
(hohun) 10:58:21 j'y ai joué récemment, et je l'ai lâché en cours de route, c'était pas mauvais mais passé les premières visites dans le monde on se lasse. C'était bizarrement lourdingue
# 10:58:21
(Akshell) J'ai commencé Thief, que j'avais préacheté en collector en 2014... bah, ouais la série était déjà morte totalement tuée par Dishonnored qui l'éclate sur tous les points.
# 20:09:11
(hohun) le club des boomers
lire la suite de la tribune