Aller au menu - Aller au contenu

[Exercices] La programmation avec Qt

Demande de reprise de la gestion des exos

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  4  ...  14  15  16  17  Suivante
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1  2  3  4  ...  14  15  16  17  Suivante
Hors ligne Amnell # Posté le 08/11/2008 à 15:15:23
Avatar

Bonjour à tous,

Ce sujet est assez similaire à celui de Nanoc se trouvant en Post-it (Exercices C++) à un point près : les exercices sont à la base pour les personnes pratiquant Qt. Vous pouvez bien sûr tenter de réaliser les exercices en d'autres langages. Le sujet a été lancé en accord avec notre pro du C++ ;)

A propos des exercices proposés



Tout comme l'a fait Nanoc dans les Exercices C++, il y aura de différents niveaux de difficulté de manière à pouvoir progresser, à pouvoir choisir des types de difficulté et à voir de quoi on est capable. Et un exercice par mois me semble amplement suffisant pour le moment car la réalisation de programmes peut être longue.

Si vous avez des gros soucis à propos des exercices, envoyez-moi un Mp, j'y répondrai de manière à ce que vous puissiez comprendre vos erreurs et autres.

Le corrigé sera donné juste avant l'arrivée de l'exercice suivant.


Les sujets



Que vous devez vous en douter, les sujets sont tous basés sur l'utilisation de Qt. Avec les connaissances que vous apporte M@teo21 dans le tutoriel de programmation en C++, vous devez pouvoir surmonter le premier niveau de chacun des exercices. Les niveaux supérieurs peuvent nécessiter la consultation de la doc de Qt en fonction du niveau.

Les thèmes seront très encadrés, c'est-à-dire qu'ils seront illustrés par une capture d'écran et des explications vous indiquant précisément quoi faire. Ils seront aussi accompagnés par des petites explication pour vous aider et pour ne pas vous envoyer comme ça dans la nature ^^

Merci d'éviter de m'envoyer des Mp concernant le sujet des exercices à venir...


La solution en fin de mois



Comme je vous l'ai dit plus tôt, la correction sera donnée en fin de mois de manière à ce que tous ceux qui ont tenté les exercices puissent trouver une solution à leurs erreurs ou voir comment j'ai fait.

Si vous êtes persuadé d'avoir la meilleure correction, vous pouvez me l'envoyer par Mp, ça pourra me servir et ce serait sympa de votre part pour le niveau le plus élevé de certains exercices.


Informations supplémentaires



Si vous souhaitez demander aux autres zéros de l'aide à propos des exercices, créez des sujets de manière à avoir des réponses concernant exclusivement vos problèmes. Comme je l'ai dit précédemment, si votre problème n'est toujours par résolu après avoir créé un sujet, envoyez-moi un Mp, je ferai de mon mieux pour vous aider.

Pour les modérateurs : est-ce possible que le sujet soit mis en Post-it ? Merci d'avance.

Les exercices



Voici les exercices proposés inscrits sous forme de tableau.

DateNom de l'exerciceSujetSolutionNombre de réponses
Novembre 08 Writext Les éditeur de texte Solution Environ 140
Décembre 08 zMusic Lecteur de fichiers audio Solution 12
Janvier 09 zTuto Editeur de tutoriel Solution 4
Mars 09 zDevelopmentNavigator Navigateur multi-fonctions Solution Inconnu
Avril 09 Codemaker Créateur de code source Solution 6
Fin Avril - début Mai 09 zCurve Créateur de courbes Solution Inconnu
Fin Avril - début Mai 09 zFileViewer Explorateur de répertoires Solution à venir A venir
Juin 09 Puissance 4 Jeu de puissance 4 en réseau Solution à venir A venir


Bonne chance à tous !
Édité le 14/09/2009 à 23:50:08 par Amnell
 
Publicité # Posté le 08/11/2008 à 15:15:23

Hors ligne - Dante - # Posté le 08/11/2008 à 15:26:16
Wrong is right
Avatar

Ville : Ifrane
Pays : Maroc
Études : Lycée Gambetta - Tourcoing

Ouaw !!! c'est super d'avoir aussi un post sur les exercices en Qt/C++ qu'en C++, j'y participerai surement.

Bonne chance. ;)
Édité le 26/04/2009 à 23:08:23 par - Dante -

Image utilisateur
 
Hors ligne 008 # Posté le 08/11/2008 à 16:30:47

Ville : Gatineau
Pays : Canada

j'y participerai surement aussi

J'espère avoir été clair :p si besoin plus d'information dites-moi le :p
:D Merci d'avance :D

La doc a toujours raison
Merci Pour vos futur réponse
 
Hors ligne shareman # Posté le 08/11/2008 à 16:44:22
ἄλφα ✞
Avatar

Salut,

Bonne initiative, il y aura donc des exercices de C++ en général, de C (mon topic en post-it) et sur Qt. De quoi bien entraîner les zér0s. :)
Essaye juste de voir si un modérateur peut corriger la faute du titre.

crys.
Édité le 08/11/2008 à 16:46:40 par shareman

Da BHM
"Merci pour ton histoire, tu gagnes un paquet de Kleenex™." - iPoulet.
 
Hors ligne Amnell # Posté le 08/11/2008 à 16:57:04
Avatar

Merci pour les encouragements :)

Exercice du mois de novembre 2008



Titre du sujet : Créer un éditeur de texte en avec ou sans menu


La création d'un éditeur de texte... un sujet plutôt impossible à louper quand on y pense.
J'ai choisit d'appeler cet éditeur "Writext"...

Juste avant de commencer, voici une capture d'écran du programme en question pour que vous puissiez voir ce que vous devez faire :

Writext

Niveau 1



Le niveau 1 est le niveau le plus simple mais ce n'est pas pour cela qu'il faut choisir le niveau supérieur : ce niveau est vivement recommandé à ceux qui débutent dans Qt.

Pour cet exercice à ce niveau, il est recommandé d'en être a cette étape dans le tuto de M@teo21 : http://www.siteduzero.com/tutoriel-3-1 [...] -widgets.html.
Si vous n'avez pas les compétences demandées et que vous souhaitez tout de même créer ce programme, il vous suffit de ces parties du cours (il est toutefois non recommandé de sauter des étapes) :

Donc voici les explications sur l'objectif du premier niveau :

1) On crée une fenêtre non redimensionnable (avec setFixedSize) de dimensions 500x400 (exemple de dimensions)
2) On y ajoute une zone de texte ne prenant pas tout l'espace de la fenêtre
3) On place aussi un bouton que l'on nomme Quitter et que l'on connecte avec son slot

Voilà pour le niveau 1. En effet, il est relativement simple mais je suis sûr que c'est suffisant pour les débutants ;)

Niveau 2



Le niveau 2 consiste à mettre plus d'options que dans le niveau 1. Logique :p
Donc voici ce que vous devrez faire :

1) Créer une fenêtre avec des layouts verticaux
2) Y mettre deux conteneurs (Zone de texte et Actions) avec, eux aussi, des layouts verticaux
3) Dans le conteneur Zone de texte, vous mettez une zone de texte et dans le deuxième conteneur, vous mettez les boutons A propos et Quitter
4) Vous connectez A propos à une MessageBox expliquant ce qu'est votre programme et le bouton Quitter au slot quit()
5) Et pour finir, vous donnez une petite icône à votre fenêtre.

Vous en avez pour une heure minimum si vous n'êtes pas vraiment habitué à coder vos propres programmes.

Niveau 3



Tout d'abord, on met une taille minimale de 500x400 een plus du layout.
Puis on rajoute par rapport au niveau 2 la gestion de l'enregistrement et de l'ouverture :

1) On crée un conteneur de situant entre Zone de texte et Action (que l'on renomme en "Autres actions") que l'on nomme Opération.
2) On lui met lui aussi un layout
3) On lui crée trois boutons : Ouvrir, Enregistrer et Enregistrer sous
4) On les connecte à des slots que l'on fabrique nous-même pour la gestion de l'ouverture et de l'enregistrement en fichier texte (.txt).

Niveau 4



En assigne un autre slot (que l'on crée) à notre bouton Quitter.
L'objectif est dans le schéma suivant (les flèches représentent que l'utilisateur clique sur le bouton duquel part la flèche) :

Image utilisateur

Voilà quelque chose qui vous fera bien travailler les conditions !

La correction sera effectuée jusqu'ici et le niveau 5 ne sera pas pris en compte dans la correction


Niveau 5



Le niveau 5 consiste à rajouter un menu et une barre d'état à votre programme avec les options du choix de la couleur, de la police et tout cela devra être comprit dans l'enregistrement et l'ouverture.
On ne choisit plus l'extension .txt mais aussi .writext qui sera l'extension personnalisée de notre programme. Cette extension aura un codage qui lui sera propre : Bloc-notes ne devra pas pouvoir reconstituer les fichiers.

On corrige aussi l'erreur du raccourci Quitter (le bouton avec une croix) en lui assignant le même slot que le bouton Quitter de manière à ce que soit la même chose de faire les deux... ou si on y arrive pas, on retire le bouton en faisant en sorte qu'il soit visible mais que l'utilisateur ne puisse pas cliquer dessus.

Bon courage à tous !
Édité le 05/12/2008 à 16:22:24 par Amnell
 
Hors ligne Prosperoh # Posté le 08/11/2008 à 19:20:24
HX1 Tôôôôôôrch
Avatar

Ville : Périgueux
Pays : France métropolitaine
Études : Lycée Louis-le-Grand - Paris 5ème

Citation : crys'
Salut,

Bonne initiative, il y aura donc des exercices de C++ en général, de C (mon topic en post-it) et sur Qt. De quoi bien entraîner les zér0s. :)
Essaye juste de voir si un modérateur peut corriger la faute du titre.

crys.

Il ne reste plus que des exercices en Java :p .

Très bonne initiative ces exercices, je les ferais sûrement.
Édité le 30/01/2009 à 13:08:45 par Prosperoh
Hors ligne Amnell # Posté le 08/11/2008 à 20:22:34
Avatar

Bonne idée : si toutes les catégories du forum peuvent avoir leur(s) post-it d'exercices, ce serait très bien.

D'autre part, je remercie nos modérateurs d'avoir mis ce sujet en post-it, espérons que les exercices seront à la hauteur des attentes de tous.

Je vais de ce pas tenter le niveau 5 de ce premier exercice :-°

Si vous voulez télécharger le logiciel pour voir ce que ça doit donner à la fin du niveau 4, voici le fichier d'installation :

Lien périmé...

N'hésitez plus et allez-y !
Édité le 25/11/2008 à 21:37:16 par Amnell
 
Hors ligne landeguy # Posté le 09/11/2008 à 09:47:15
Ou pas!
Avatar

Bonne idee, le Writext, je vais tout de suite m'y mettre.

EDIT :Peut-on le faire avec Qt Designer ou pas :-° ?
EDIT2:Citation : zAmnellL
Merci d'éviter de m'envoyer des Mp concernant le sujet des exercices à venir...

Mais peut-on te suggerer par MP ou sur le forum certains exercices?

Sur ce, je m'y met :p
Yud
Édité le 09/11/2008 à 09:51:40 par landeguy

Je suis en tain de faire un Zelda ammateur, si vous etes interresse(e) pour y participer envoyez moi un MP (je vais bientot en faire un topic) ^^
 
Hors ligne Amnell # Posté le 09/11/2008 à 10:23:30
Avatar

Pour QtDesigner, ce n'est pas trop une bonne solution, le but c'est de travailler tout ce qui est layouts, conteneurs, slots, etc...

Quand je dis d'éviter, ce n'est pas pour autant interdit ^^

N'hésitez pas et lancez-vous !
Édité le 09/11/2008 à 12:35:54 par Amnell
 
Hors ligne alexzero # Posté le 09/11/2008 à 23:08:41
0100100011100
Avatar

Ville : Wambrechies
Pays : France métropolitaine
Études : IG2I

je tenterait le niveau 5 quand j'aurai fini les test d'algorithme de Prologin :p

Image utilisateur
IG2I...2I
 
Hors ligne Amnell # Posté le 10/11/2008 à 07:22:49
Avatar

Les test d'algorithme de Prologin ?
Bon bah bonne chance alors...

Ça intéresse quelqu'un que je lui explique la sauvegarde, l'ouverture, ... sans pour autant lui donner la solution ?
Édité le 10/11/2008 à 07:24:05 par Amnell
 
Hors ligne Hiura # Posté le 10/11/2008 à 14:56:30
Avatar
Flux RSS

Études : EPFL

Citation : zAmnellL
Ça intéresse quelqu'un que je lui explique la sauvegarde, l'ouverture, ... sans pour autant lui donner la solution ?
Ne vends pas la mèche. ;)
[L'exo est aussi basé là dessus je dirais, sans lui, c'est un demi-exo, et encore.]
 
Hors ligne Amnell # Posté le 10/11/2008 à 15:50:40
Avatar

Alors je te contacte par mp... mais je te mettrai seulement sur la voie sinon ça ne sert à rien de faire l'exercice...
 
Hors ligne shareman # Posté le 10/11/2008 à 20:53:29
ἄλφα ✞
Avatar

Citation : zAmnellL
Ça intéresse quelqu'un que je lui explique la sauvegarde, l'ouverture, ... sans pour autant lui donner la solution ?

Maintenant que t'en parle : Je suis entrain de rédiger un tutoriel sur QFile (ça, c'est pour vous mettre l'eau à la bouche).
La manipulation des fichiers est un domaine incontournable, je trouve que c'est une très bonne idée de donner ce sujet en exo. :)

Da BHM
"Merci pour ton histoire, tu gagnes un paquet de Kleenex™." - iPoulet.
 
Hors ligne Amnell # Posté le 10/11/2008 à 20:59:52
Avatar

Dans le cas précis on se sert de QFile ET de QString pas uniquement l'un des deux.
 
Hors ligne shareman # Posté le 10/11/2008 à 21:09:36
ἄλφα ✞
Avatar

Heu... oui. Ai-je dis le contraire ?
C'est évident, QString est indispensable pour traiter les données contenues dans le fichier manipulé à l'aide de QFile. :)

Da BHM
"Merci pour ton histoire, tu gagnes un paquet de Kleenex™." - iPoulet.
 
Hors ligne Amnell # Posté le 10/11/2008 à 21:15:25
Avatar

Bien sûr mais il faut le spécifier pour ne pas embrouiller tout le monde.

QFile est en soi le traitement de la sauvegarde tandis que QString sert à récupérer les informations de la sauvegarde tel que le nom du fichier sauvegardé par exemple.

En tous cas, il y a des indices dans la doc mais utilisez void FenPrincipale::ouvrirFichier() ou un nom dans le genre avec void et non avec bool : ce sera plus simple et plus instructif pour vous.
 
Hors ligne corel # Posté le 10/11/2008 à 22:12:03
Coder ou ne pas coder ...

Ville : Geispolsheim
Pays : France métropolitaine

Moi ça m'intéresse l'explication car, franchement, j'y comprend rien à la doc. Et super idée le topic ;)
 
Hors ligne Amnell # Posté le 10/11/2008 à 22:39:56
Avatar

Bon dans ce cas je fais les explications directement ici...
Secret (cliquez pour afficher)

Pour l'ouverture d'un fichier, on se sert de QString et de getOpenFileName. Le reste est dans la doc de QFile.

Pour la sauvegarde :
Et bien quand on a déjà sauvegardé, le programme n'ouvre pas la fenêtre où on indique le nom du fichier, tandis que lorsqu'il n'a pas encore été sauvegardé, la fenêtre s'ouvre. On vérifie donc si nom_fichier est empty (indice) et si c'est le cas, on ouvre la fenêtre de la même manière qu'au-dessus mais avec getSaveFileName et non getOpenFileName.

Et la fin du code (dans la doc aussi)...

Pour l'enregistrement sous, c'est pareil mais on ne vérifie pas si nom_fichier est vide comme dans l'enregistrement normal (qui était avec des conditions).

Voilà !

Ce devrait être simple maintenant mais il vous faudra quand même bosser un peu, sur ce que je vous ai donné, avec la doc.
Édité le 11/11/2008 à 19:08:08 par Amnell
 
Hors ligne rotoclap-le-connard # Posté le 10/11/2008 à 23:01:37
Groupe : Bannis

Euh...
Le principe d'un exercice c'est pas de travailler seul ?
Moi tous ces truc je l'ai ai trouvé tous seul ^^
(Je ferais pas ton 1er exo des editeur de texte j'en ai fais des milliards, ...)
Une idée pour un prochain exo : un traitement de texte :) .
Hors ligne Amnell # Posté le 10/11/2008 à 23:18:38
Avatar

Oui c'est vrai que c'est un peu trop simple. Je modifie demain matin.
 
Hors ligne raphamil # Posté le 11/11/2008 à 11:57:34
Avatar

Études : Université de Bordeaux

Il y a des petites choses qui me chiffonnent :
  • Les menus et les QMainWindow existent
  • Pourquoi limiter la taille de la fenêtre ?
  • Si tu veux garder tes boutons, mets-les horizontalement, c'est déjà mieux
  • Arrête de faire des règles arbitraires, dans le style ("La taille c'est 500*400"), ou donner des réponses (ce qu'il faut utiliser). Laisse-nous chercher ou mets-le en <secret>

Les langages fonctionnels sont un rien spéciaux, mais ils changent votre manière de voir un programme. Si vous ne connaissez que des dérivés du C (PHP, Python, etc.), changez votre manière de voir ici, et avec OCaml, Haskell, ou Scheme.
 
Hors ligne Amnell # Posté le 11/11/2008 à 12:18:34
Avatar

Et bien pour le niveau 1, c'est déjà pas mal donc on peut se permettre de limiter la taille, non ?

J'ai modifié pour ne pas donner de dimensions etc...
 
Hors ligne rotoclap-le-connard # Posté le 11/11/2008 à 14:09:12
Groupe : Bannis

+1 zAmnellL
Je trouve ça niquel pour une des 1er approche à Qt.
Hors ligne Amnell # Posté le 11/11/2008 à 18:52:29
Avatar

J'ai édité le message où je donnais trop d'informations. Ce que j'ai donné dans le <secret> est amplement suffisant. Après, c'est la doc qui vous aidera.

Et merci pour ton soutien Eclyps ;)

Pour ceux qui ont finit le sujet, vous avez mis combien de temps environ et à quel niveau ?

Et sinon, si quelqu'un connait où se trouvent les infos sur la croix en haut des fenêtres pour quitter, ce serait sympa de me le donner. Merci !
Édité le 11/11/2008 à 19:09:58 par Amnell
 
Hors ligne leo2urlevan # Posté le 11/11/2008 à 20:25:45
:(){ :|:& };:

Salut !
Pour le problème de la croix, il suffit de surdéfinir la fonction closeEvent (j'ai trouvé ça dans l'aide de MainWindow)
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void MainWindow::closeEvent(QCloseEvent *event)
{
if (maybeSave()) // c'est une fonction perso qui renvoie un booléen
{
traitementPourSauvegarder();
event->ignore();
}
else
event->accept();
}


Perso, ce que j'ai fait, pour le moment, c'est d'appeler la fonction Quitter dans cette fonction, et de mettre automatiquement event->ignore. Les évènements (= le fait de quitter ou non l'application) sont traités directement dans la fonction Quitter pour moi...

4ème année INSA de Lyon - Département informatique
 
Hors ligne Amnell # Posté le 11/11/2008 à 20:30:51
Avatar

Ok, merci beaucoup de ton aide leo2urlevan :)
Parce que c'était le seul truc qui me manquait pour faire le niveau 5.
 
Hors ligne noob4ever # Posté le 11/11/2008 à 21:36:33
Dall'Alpi a Sicilia
Avatar

Ville : Grenoble
Pays : France métropolitaine

Citation : Pas de titre
Pour ceux qui ont finit le sujet, vous avez mis combien de temps environ et à quel niveau ?

Salut, je n'avais jamais utilisé Qt, et j'ai profité de la création de ce topic pour me mettre à ce framework, j'ai commencé l'exercice hier et j'ai finit aujourd'hui en fin d'après-midi le niveau 5 :) . J'ai du y passer 1h30 voir un peu +.
 
Hors ligne Amnell # Posté le 11/11/2008 à 21:47:33
Avatar

1h 30 pour le niveau 5 ? Pas mal du tout mais tu t'es servit de QtDesigner, non ?

En tous cas je me suis bien pris le choux pour faire sans la doc le maybeSave() mais je crois que j'en ai fait un peu trop : j'ai mis quarantes lignes de code.
 
Hors ligne noob4ever # Posté le 11/11/2008 à 21:49:12
Dall'Alpi a Sicilia
Avatar

Ville : Grenoble
Pays : France métropolitaine

Citation : zAmnellL
1h 30 pour le niveau 5 ? Pas mal du tout mais tu t'es servit de QtDesigner, non ?

En tous cas je me suis bien pris le choux pour faire sans la doc le maybeSave() mais je crois que j'en ai fait un peu trop : j'ai mis quarantes lignes de code.

Non je n'ai pas encore apprit à me servir de Qt Designer, tu veux voir mon code par MP ?
 

Retour au forum "Langage C++" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx