Projet

Général

Profil

DisposerWidgets

Le fichier joint contient le code du premier exemple intéressant du livre Qt4 et C++.
Le titre des exemples devrait permettre de retrouver le chapitre concerné...
J'ai essayé de commenter le code de façon claire pour les débutants.
En lisant le livre je me suis fait quelques annotations dans la marge : je voudrais vous en faire profiter.

La description des différents gestionnaires de disposition(layout manager) en oublie un important : QFormLayout qui est un QGridLayout amélioré pour faire de façon simple des formulaires.

Remarque importante au niveau "propreté" du code (vous pouvez faire sans, Qt vous aide à passer par dessus ce problème) mais je le précise parce que le livre fait volontairement une approximation. J'insiste sur le fait que vous n'êtes pas obligé de lire ce qui suit, que vous pouvez continuer à créer les objets comme l'indique le livre et c'est bien comme ça !!
Maintenant pour ceux que ça chiffonnerait :

Allocation dynamique : utilisation des pointeurs
En commentaire de la ligne 6 du premier programme "Hello Qt" on vous dit :
"La ligne 6 crée un Widget QLabel qui affiche "Hello Qt !"
c'est là l'approximation :
Pour économiser la mémoire... ?
Pour rapprocher la programmation en C++ de celle en Java ou C#... ?
... les auteurs utilisent en permanence dans ce début de cours des pointeurs.
La ligne 6 peut se découper en deux parties

QLabel *label;

Je prévois de mettre sous le nom "label" (ce choix n'est pas très judicieux parce qu'il crée une confusion entre le nom de l'objet et le nom de son type) un numéro : c'est une adresse dans la mémoire que je réserve pour pouvoir y stocker un objet de type QLabel.

label = new QLabel("Hello Qt !")

Je crée effectivement un objet de type QLabel à l'endroit réservé en utilisant celui des constructeurs qui prend une QString en paramètre;

Illustration dans le code de "1disposerWidgets"
  • ligne 25 je crée VRAIMENT sous le nom "maValeur" un objet de type QSpinBox. Du coup j'appelle la fonction setRange avec ".", et mais comme connect veut une adresse mémoire, j'écris "&maValeur" ce qui signifie "l'adresse mémoire où se trouve maValeur"
  • par contre ligne 26 je fais comme on me dit, je crée sous le nom "monCurseur" un pointeur vers un objet de type QSlider, que je crée (on dit "j'instancie") aussitôt par le new. Du coup comme monCurseur est un pointeur et pas un objet j'appelle la fonction setRange avec "->" et il me suffit de donner "monCurseur" à connect.

1disposerWidgets.tar.gz (446 ko) Philippe Cadaugade, 22/06/2010 10:12

Redmine Appliance - Powered by TurnKey Linux