résumé - exemple
Créer des IHM avec Qt
EX2 : AFFICHAGE D’UN MESSAGE (après appui sur un bouton)
Signal = Message envoyé par un widget lorsqu’un événement se produit
Ex : Clic sur un bouton (clicked())
Slot = Fonction appelée lorsqu’un événement s’est produit
Le Signal appelle le Slot
Slot == méthode d’une classe
Ex : Slot quit() (class QApplication) –> arrêt du programme
|
OBJET 1 |
|
OBJET 2 |
|
Attributs |
|
|
|
Méthodes |
|
|
|
Signaux |
———> |
Slots |
|
Slots |
|
|

main.cpp
|
#include "mywindow.h" #include <QApplication>
int main(int argc, char *argv[]) // c'est ici que ça commence { QApplication a(argc, argv); // constructeur de l'application MyWindow w; // Constructeur de la fenetre w.show(); // Affichage de la fenetre
return a.exec(); // Exécution de l'application } |
mywindow.h
|
#ifndef MYWINDOW_H #define MYWINDOW_H
#include <QWidget> #include <QPushButton> #include <QMessageBox>
class MyWindow : public QWidget // On hérite de QWidget (IMPORTANT) { Q_OBJECT // Nécessaire pour créer un slot maison
public: MyWindow(); // Constructeur (forcément pubic)
public slots: // Slots maison void Dialogue();
private: QPushButton *m_bouton; // Attribut (forcément privé) // pointeur --> il faudra le construire dynamiquement (new)
};
#endif // MYWINDOW_H |
mywindow.cpp
|
#include "mywindow.h"
MyWindow::MyWindow() : QWidget() // spécification du constructeur { setFixedSize(300,400); // setFixedSize appartient à classe MaFenetre (héritage de QWidget // Largeur / Hauteur
/* Construction du bouton */ m_bouton = new QPushButton("open", this); // this = pointeur vers le widget parent, pointeur vers 'moi' m_bouton->move(100, 100); // RePositionnement Absolu
/* Connexions Signal - Slot */ QObject::connect(m_bouton, SIGNAL(clicked()), this, SLOT(Dialogue())); // this = SLOT de MyWindow (SLOT MAISON) } //========================================================================================== void MyWindow::Dialogue() { QMessageBox::information(this, "Titre de la fenêtre", "Hello"); // REM : information / warning / critical / question // int reponse = QMessageBox::question(this, "Titre de la fenêtre", "vraiment ?", QMessageBox::Yes | QMessageBox::No); // (OU LOGIQUE)
} //========================================================================================== |
Créé avec HelpNDoc Personal Edition: Faites l'expérience d'une interface conviviale avec l'outil de documentation de HelpNDoc