Signal-Slot

Comment lier des évènements (clic souris par exemple) à des méthodes

Les SIGNAUX et SLOTS permettent cela.


Il est possible de manipuler SLOT et SIGNAL directement dans le fichier cpp

Dans le fichier cpp (mainwindow.cpp par exemple)

   QObject::connect(monBoutons0, SIGNAL(clicked()), this, SLOT(boutonclic0()));

Lorsque monBouton0 est cliqué (signal clicked) la procedure boutonclic0 est déclenché vers la fenêtre parent (mainwindow donc).

Dans le fichier entête (mainwindow.h), il faut déclarer le slot dans la classe MainWindow :

public slots:

   void boutonclic0();

Dasn le fichier cpp (MainWindow.cpp) il faut définir l'action réalisée par bouitonclic0() :

void MainWindow::boutonclic0()

{

//Actions à réaliser

}

Un slot ne peut pas avoir de paramètre.... Si besoin, il faudra utiliser la classe QSignalMapper


Lorsqu'un menu a été dessiné avec QT Designer...

....Et que l'on souhaiter lier ce menu à un slot du programme.

L'Action liée au menu doit être liée à un slot déclaré dans le header de la fenêtre principale (mainwindow.h)

.....

public slots:

   void monslot();

.....

Dasn le code source de la fenêtre, il faut décrire la méthode (le slot) :

......

void MainWindow::monslot()

{

  //le code du slot

}

De plus dans ce code source il faut réaliser la onnection entre l'émeteur de l'évènement (ui) et la fenêtre :

MainWindow::MainWindow(QWidget *parent) :

   QMainWindow(parent),

   ui(new Ui::MainWindow)

{

   ui->setupUi(this);

........

   QObject::connect(ui->actionJe_commence,SIGNAL(triggered()), this, SLOT(monslot()));

......


}
......