On se propose ici de réaliser une application permettant aux enfants de se familiariser avec l'addition. Le principe est le suivant:
Une question est posée à l'enfant du type ?+4=8.
L'enfant dispose de 10 boutons correspondants aux chiffres de 0 à 9. Lorsqu'il appuie sur un des boutons, le chiffre qu'il a choisit apparaît à la place du "?".
Il apparaît en vert lorsque la réponse est exacte et en rouge sinon. Lorsque la réponse est exacte, l'enfant peut alors cliquer sur le bouton suivant, qui lui permet de voir apparaître une autre question.
Au démarrage de l'application (slot init de votre Formulaire à créer) ainsi qu'à chaque nouvelle question, les deux nombres affichés sont générés aléatoirement.
La fonction "srand(uint unentier)" permet d'initialiser le générateur de nombres aléatoires. En général on se base sur l'heure pour initialiser le générateur. srand((uint) time(NULL)); "time est une fonction de la bibliothèque <time.h> .L'inclusion de la bibliothèque se fait grâce à QT Designer dans la déclaration de la classe correspondante à votre formulaire (onglet membre de l'explorateur d'objet).
La fonction "rand()" renvoie un entier aléatoire. Pour obtenir un entier entre 0 et 9 compris on écrira ceci : "monEntier=rand()%10;"
Attention, la fonction "srand" ne doit être exécutée qu'une seule fois. Les deux fonctions appartiennent à la bibliothèque de fonctions standard "stdlib". On pensera donc à inclure <stdlib.h>. L'inclusion de la bibliothèque se fait grâce à QT Designer dans la déclaration de la classe correspondant à votre formulaire (onglet membre de l'explorateur d'objet).
Si nous connectons les signaux "clicked" de plusieurs QPushButton * au même slot, il est intéressant de savoir qui est l'emmeteur du signal par exemple pour récupérer son texte. L'emmetteur est connu sous le nom de "sender". Par contre, il s'agit d'un QObject*. Impossible donc d'obtenir la valeur de sa propriété texte. Puisque nous avons développé l'application, nous savons que l'on a connecté notre slot qu'à des signaux clicked provenant de QPusButton*. On va donc faire un "casting" forcer le type du QObjet * en QPushButton*. Cela nous donne: QString chiffreClique=(QPushButton*)sender->text();
Entier vers chaîne :
QString maChaine; machaine=machaine.setNum(monEntier); ou QString maChaine=QString::number(monEntier);
Chaîne vers entier :
int monEntier=machaine.toInt();
Changement de couleur : Comme vous le remarquez dans l'éditeur de propriétés: Les objets de la classe QTextLabel dispose d'une propriété PaletteBackGroundColor il s'agit de la couleur de fond.
Évidemment une méthode de cette classe permet de changer la valeur de la propriété : "setPaletteBackgroundColor(QColor une couleur)."
Exemple : TextLabel1->setPaletteBackgroundColor(QColor(255,0,0));
va mettre la couleur de fond en rouge.
QColor(r,g,b) est un des constructeurs de la classe "QColor" il prend en paramètre 3 octets signifiant respectivement la quantité de rouge, la quantité de vert et la quantité de bleu. La classe QColor est définie dans le fichier <qcolor.h> qu'il faudra penser à inclure.