« Programmation Qt/Signaux et slots » : différence entre les versions
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 6 :
== Définition ==
Les signaux et slots permettent d'interconnecter des objets Qt entre eux :
* un '''signal''' est
* un '''slot''' est une fonction réalisant l'action associée à un signal.
Ligne 13 :
=== Définir un signal ===
Un signal est défini dans le fichier d'en-tête déclarant la classe :
{{FichierDébut|Telechargement.h|largeur=70%|info=(extrait) Définition du signal|icon=Crystal Clear mimetype source cpp.png}}
<source lang="cpp-qt">
class Telechargement: public QObject
{
Q_OBJECT
// ...
public signals:
void fichierRecu(QString chemin_fichier);
// ...
}
</source>
{{FichierFin}}
Aucune implémentation n'est à définir dans la classe.
Le signal est utilisable dans la définition de la classe :
{{FichierDébut|Telechargement.cpp|largeur=70%|info=(extrait) Utilisation du signal|icon=Crystal Clear mimetype source cpp.png}}
<source lang="cpp-qt">
void Telechargement::Terminer()
{
// Nettoyage...
// ...
// Signaler la fin
emit fichierRecu( this->m_chemin_fichier );
}
</source>
{{FichierFin}}
=== Définir un slot ===
Un slot est similaire à une méthode de la classe :
* Il doit être déclaré dans l'en-tête, dans une section <tt>slots</tt> ;
* Il doit être implémenté dans la définition de la classe.
{{FichierDébut|Stockage.h|largeur=70%|info=(extrait) Déclaration des slots|icon=Crystal Clear mimetype source h.png}}
<source lang="cpp-qt">
class Stockage: public QObject
{
Q_OBJECT
// ...
public slots:
bool stockerFichier(QString chemin_fichier);
bool supprimerFichier(QString chemin_fichier);
void finArchivage();
// ...
}
</source>
{{FichierFin}}
{{FichierDébut|Stockage.cpp|largeur=70%|info=(extrait) Définition des slots|icon=Crystal Clear mimetype source cpp.png}}
<source lang="cpp-qt">
// ...
bool Stockage::stockerFichier(QString chemin_fichier)
{
// ... copie du fichier spécifié dans le lieu de stockage
}
bool Stockage::supprimerFichier(QString chemin_fichier)
{
// ... suppression du fichier spécifié
}
void finArchivage()
{
// ... afficher le message "Fin de l'archivage"
}
// ...
</source>
{{FichierFin}}
=== Connexion ===
|