Les fichiers sources des classes de l'application
Généralité
Dans votre projet, les sections Headers et Sources vous donnent accès aux fichiers sources de l'application.
Chaque classe créée est définie par deux fichiers :
Le fichier .h d'interface qui décrit la classe (déclaration de la classe, de ses attributs, méthodes).
Le fichier .cpp qui implémente (définit) les méthodes de cette classe. Le fichier .h est inclus au début du fichier .cpp.
Les fichiers .h
L'image ci-contre affiche le fichier mainwindow.h
, la définition de la classe de l'application (le nom de la classe principale n'a pas été changé).
Cette classe est particulière parce qu'elle est le container principal de l'IHM créée par défaut.
D'ailleurs, MainWindow
hérite de QMainWindow
qui est une classe de gestion d'une fenêtre.
A noter qu'une donnée membre ui
est déclarée dans la section private
de la classe. Elle permettra d'accéder à tous les éléments IHM de notre application depuis cette classe seulement.
Pour les futurs développements, il faut veiller à ce que cette classe ne serve qu'à gérer la partie graphique, initialiser les objets métiers et communiquer avec eux.
Cela permet de simplifier les éventuelles modifications de l'IHM durant le cycle de vie de l'application.
La partie graphique est donc séparée de la partie métier.
Remarque : MainWindow
Le nom de cette classe est par défaut lors de la création d'un projet Qt.
Dans notre cas, si vous avez suivi les indications précédentes, cette classe se nommera CIhmAppIhm1
.
Les fichiers .cpp
Ces fichiers contiennent la définition des méthodes des classes.
Dans le fichier mainwindow.cpp
ci contre, nous ajouterons le code de personnalisation de notre IHM, initialiserons nos classes d'application, lancerons les traitements.
Notez l'appel à la méthode setupUi()
permettant d'initialiser l'accès aux widgets graphique de l'IHM représenté par le pointeur ui
dans le constructeur de la classe. C'est à partir de ce moment là que nous pouvons ajouter des traitements graphiques dans le programme.
ui
étant un pointeur sur une zone de mémoire dynamique, il est nécessaire en fin d'application de libérer cette zone mémoire (delete
dans le destructeur).
Rappel : Pointeur en C++
Un pointeur est une variable spéciale car elle contient une adresse de base de zone mémoire.
Pour la déclarer :
int *var;
int var2 = 5;
var = &var2;
Dans le code ci-dessus, var
est pointeur contenant l'adresse de la variables var2
.
Il est donc maintenant possible d'utiliser ce pointeur pour lire ou écrire dans la variable var2
:
*var = 6; // var2 prendra la valeur 6
cout << *var // lire la valeur de var2
Les pointeurs sont beaucoup utilisés pour représenter des objets. Exemple pour créer un objet widget graphique représentant un bouton :
QPushButton *pb1; // * signifie que c'est un pointeur
pb1 = new QPushButton(this);
pb1->setText("Valider");
Ligne 1 : Déclaration du pointeur représentant un objet bouton poussoir.
Ligne 2 : Instanciation, création du bouton en mémoire. pb1
pointe sur cet espace mémoire représentant l'objet QPushButton
.
Ligne 3 : Accès à la méthode setText()
du QPushButton
. Les caractères ->
sont l'opérateur d'accès à un attribut ou méthode d'un objet pointé. Sinon c'est le point. Exemple :
QPushButton pb1; // instanciation
pb1.setText("Valider");