Cours:SignalSlotQT
Révision datée du 14 novembre 2018 à 15:29 par Bjacquot (discussion | contributions)
Retour à la liste des Tds
Au besoin, la documentation QT peut-être intéressante : http://doc.qt.io/qt-5/signalsandslots.html
Sommaire
spécialisation de la classe QObject
Principe :
- créer nouvelle classe
- nom de la classe : MaClasse (respecter la casse : ! les capitales au bon endroit ! )
- Base class : QObject
- terminé !
// fichier dans lequel est déclaré la classe QObject
#include <QObject>
// on hérite de la classe QObject
class MaClasse : public QObject
{
// mot clé pour que qmake fasse son job pour les signaux/slots notamment
Q_OBJECT
public:
// constructeur de la classe :
// le "explicit" empêche de faire des conversions bizarroïdes entre classes
// ce n'est pas à retenir
explicit MaClasse(QObject *parent = nullptr);
signals:
public slots:
};
une classe utile :
On va faire une classe lampe :
- elle aura un attribut privé : isAllume de type bool
- des slots (en gros le nom des méthodes sur QT) dont les prototypes sont :
- void allumer()
- void eteindre()
- void changerEtat()
- un signal
- il suffit de rajouter le signal dans la déclaration de la classe (header file), rien dans le cpp !
- on ajoute dans la partie signals:
- void valueChanged(int newValue);
- lorsque c'est nécessaire on envoie la nouvelle valeur de la façon suivante :
- emit valueChanged(valeur);
- il faut bien entendu remplacer valeur par un truc intéressant !
Remarque : vous pouvez laisser de côté changerEtat pour le moment.
Utilisation de la classe
ajouter un attribut dans la classe MainWindow
relier signal avec slot
principe
connect(&objetEmetteur,SIGNAL(signalEmis()),&objetRecepteur,SLOT(slotToExecute()));
afficher un message
changer couleur d'un bouton
Plusieurs "connect" sur le même signal.