Cours:InterfaceQT : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 48 : Ligne 48 :
 
=2ème bouton => notre slot ! =
 
=2ème bouton => notre slot ! =
  
N'oublions par que nous faisons de la {{POO}}
+
N'oublions par que nous faisons de la {{POO}}.
Un slot, c'est une méthode particulière.
+
 
 +
Si nous regardons dans l'arborescence du projet, il y a 2 fichiers mainwindows.cpp mainwindows.h qui définissent la classe MainWindow.
 +
 
 +
La fenêtre qui s'affiche est un objet de la classe MainWindow, comme vous pouvez le constater dans le fichier main.cpp :
 +
<source lang=cpp>
 +
    ...
 +
    MainWindow w;
 +
    w.show();
 +
    ...
 +
</source>
 +
 
 +
Un slot, c'est une méthode particulière, c'est donc une fonctionnalité que nous ajoutons à notre objet.
 +
 
 +
On va donc ajouter un slot à la classe MainWindow pour associer une action particulière à un 2ème bouton
 +
 
 +
==Le code :==
 +
 
 +
On ajoute dans le fichier mainwindows.h la déclaration de ce slot juste avant la fin de la classe:
 +
<source lang=cpp>
 +
...
 +
class MainWindow : public QMainWindow
 +
{
 +
...
 +
public slots:
 +
    void monAction();
 +
};
 +
</source>
 +
 
 +
On définit ensuite ce slot dans le fichier mainwindows.cpp
 +
 
 +
<source lang=cpp>
 +
...
 +
//permet d'afficher des messages :
 +
#include <QDebug>
 +
...
 +
void MainWindow::monAction()
 +
{
 +
    qDebug() << "clic !";
 +
}
 +
</source>
 +
 
 +
==Le graphisme==
 +
 
 +
*On repasse sur l'interface graphique, passer un mode "Edit widget" au besoin (les boutons du haut).
 +
*On ajoute un 2ème bouton.
 +
*On repasse en édition de signaux
 +
**au signal clicked
 +
**on associe le slot :
 +
***il n'apparaît pas dans la liste !
 +
***editer
 +
***bouton {{Rouge|+}} dans la liste de slots
 +
***nom du slot : {{Rouge|monAction()}}
 +
 
 +
{{Todo|Let's try it and see}}

Version du 7 novembre 2018 à 19:40

Projet QtCreator pour raspberryPi

  • Nouveau Projet
  • application Qt avec Widgets
  • select kits
    • Rpi
    • cliquer sur manage
    • appareil mobiles
    • choisir périphérique rpi
    • modifier nom d'hôte : ras-pi-xx
    • xx est le numéro de la carte : par ex 05
    • valider
  • ajouter dans le fichier .pro les lignes suivantes après la ligne target= :
target.path = /root
INSTALLS = target

Consulter cette page pour des explications plus détaillées

Todo.jpg Lancer l'application pour vérifier la configuration

Premier bouton

Partie Graphique

  • Navigateur de projet
  • Forms
  • mainwindows.ui
  • glisser un pushbutton sur la fenêtre
  • redimensionner éventuellement

Todo.jpg Terminé ! Lancer l'application

Utilisation du bouton, signal/slot

  • ouvrir au besoin l'interface graphique, de son petit nom qtDesigner
  • dans les icônes du haut, cliquer sur Edit signals/slots
  • cliquer sur le bouton, et relâcher lorsque lorsque vous voyez un symbole de "masse"
  • une fenêtre s'ouvre
    • à gauche, on choisit quel événement déclenche une action : c'est un signal émit par l'objet
    • à droite, on choisir l'action effectuée, la méthode à exécuter : c'est un slot
  • fermons la fenêtre lors de l'appui sur le bouton :
    • cocher : afficher les signaux/slots hérités
    • signal : clicked()
    • slot : close()

Todo.jpg Valider le fonctionnement


2ème bouton => notre slot !

N'oublions par que nous faisons de la Programmation Orientée Objet.

Si nous regardons dans l'arborescence du projet, il y a 2 fichiers mainwindows.cpp mainwindows.h qui définissent la classe MainWindow.

La fenêtre qui s'affiche est un objet de la classe MainWindow, comme vous pouvez le constater dans le fichier main.cpp :

    ...
    MainWindow w;
    w.show();
    ...

Un slot, c'est une méthode particulière, c'est donc une fonctionnalité que nous ajoutons à notre objet.

On va donc ajouter un slot à la classe MainWindow pour associer une action particulière à un 2ème bouton

Le code :

On ajoute dans le fichier mainwindows.h la déclaration de ce slot juste avant la fin de la classe:

...
class MainWindow : public QMainWindow
{
...
public slots:
    void monAction();
};

On définit ensuite ce slot dans le fichier mainwindows.cpp

...
//permet d'afficher des messages :
#include <QDebug>
...
void MainWindow::monAction()
{
    qDebug() << "clic !";
}

Le graphisme

  • On repasse sur l'interface graphique, passer un mode "Edit widget" au besoin (les boutons du haut).
  • On ajoute un 2ème bouton.
  • On repasse en édition de signaux
    • au signal clicked
    • on associe le slot :
      • il n'apparaît pas dans la liste !
      • editer
      • bouton + dans la liste de slots
      • nom du slot : monAction()

Todo.jpg Let's try it and see