Cours:PooQT
Spécialisation d'un QWidget
Bien souvent, les widgets mis à disposition ne remplissent que partiellement notre cahier des charges.
Plutôt que de réécrire une nouvelle classe entièrement, il suffit la plupart du temps d'ajouter des fonctionnalités (slot, attribut ...) à une classe existance :
On spécialise une classe
L'objectif sera pour vous de concevoir un bouton possédant un slot qui permettra de changer sa couleur de remplissage (background-color) en fonction d'un paramètre de type int.
Vous pouvez repartir du projet suivant si les parties précédentes n'ont pas été toutes traitées : Media:LampeQT.zip
Une nouvelle classe
Nous souhaitons faire une classe qui hérite de QPushButton, ce qui se traduit par :
classe MonButton: public QPushButton
{
Q_OBJECT
...
}
Remarque : Lorsque vous créez votre nouvelle classe dans qtcreator, utilisez QWidget comme "base class"
- Dans QT, tous les objets graphiques héritent de la classe QWidget
- Les différents objets sont nécessairement placés dans un conteneur (un groupe d'éléments graphiques).
- On doit nécessairement indiquer dans le constructeur le widget parent (conteneur)
- Le constructeur doit donc avoir un paramètre de type QWidget
...
public :
MonButton(QWidget * parent = 0); // valeur par défaut 0 : pas de parent
...
La définition du constructeur dans le fichier cpp sera de la forme :
MonButton::MonButton(QWidget * parent)
:QPushButton(parent) // exécution du constructeur de la classe mère avant toute autre action
{
// on peut ajouter ici l'initialisation d'attributs
// ou autre ...
}
Bien entendu, on va ajouter des nouvelles fonctionnalités en déclarant les prototypes des méthodes/slots dans le .h et en les définissant dans le .cpp
...
// .h
public slots :
void maFonction( mes paramètres );
...
// .cpp
void MonButton::maFonction( mes paramètres )
{
// on fait le job ici !!
}
...