Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Qt

Choisissez la catégorie, puis la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QEventLoop

La classe QEventLoop permet d'entrer dans une boucle d'événements et d'en sortir. Plus d'informations...

#include <QEventLoop>

Voir la position dans l'arbre des classes.

  

Héritage

Hérite de QObject.

Description détaillée

La classe QEventLoop permet d'entrer dans une boucle d'événements et d'en sortir.

À tout moment, vous pouvez créer un objet QEventLoop et appeler exec() sur lui pour démarrer une boucle d'événements locale. Depuis la boucle d'événements, l'appel de exit() forcera la sortie de la fonction exec().

Voir aussi QAbstractEventDispatcher.

Type

enum QEventLoop::ProcessEventsFlagflags QEventLoop::ProcessEventsFlags

Cette énumération contrôle les types d'événements traités par les fonctions processEvents().

Constante Valeur Description
QEventLoop::AllEvents 0x00 Tous les événements. Notez que les événements DeferredDelete font l'objet d'un traitement spécial. Voir QObject::deleteLater() pour plus de détails.
QEventLoop::ExcludeUserInputEvents 0x01 Ne pas traiter les entrées utilisateur, comme ButtonPress et KeyPress. Notez que les événements ne sont pas annulés ; ils seront envoyés la prochaine fois que processEvents() sera appelé sans le drapeau ExcludeUserInputEvents.
QEventLoop::ExcludeSocketNotifiers 0x02 Ne pas traiter les événements de notification des sockets (réseau). Notez que les événements ne sont pas annulés ; ils seront envoyés la prochaine fois que processEvents() sera appelé sans le drapeau ExcludeUserInputEvents.
QEventLoop::WaitForMoreEvents 0x04 Attendre les événements si aucun événement n'est actuellement disponible.
QEventLoop::DeferredDeletion 0x10 obsolète - ne pas utiliser.

Le type ProcessEventsFlags est un typedef pour QFlags<ProcessEventsFlag>. Il enregistre une combinaison OU de valeurs de ProcessEventsFlag.

Voir aussi processEvents().

Fonctions membres

QEventLoop::QEventLoop ( QObject * parent = 0 )

Construit un objet boucle d'événements avec le parent donné.

QEventLoop::~QEventLoop ()

Détruit l'objet boucle d'événements.

int QEventLoop::exec ( ProcessEventsFlags flags = AllEvents )

Entre dans la boucle d'événements principale et attend que exit() soit appelé. Renvoie la valeur passée à exit().

Si des flags sont spécifiés, seuls les événements des types autorisés par les flags seront traités.

Il est nécessaire d'appeler cette fonction pour commencer le traitement des événements. La boucle d'événements principale reçoit des événements depuis le système de fenêtres et les transmet aux widgets de l'application.

De manière générale, aucune interaction avec l'utilisateur ne peut se faire avant l'appel d‹exec(). Le cas des widgets modaux comme QMessageBox est une exception. Les widgets peuvent être utilisés avant l'appel d‹exec() car ils possèdent leur propre boucle d'événements locale.

Pour que votre application exécute une tâche de fond (c'est-à-dire exécuter une fonction spéciale si aucun événement n'est en attente), utilisez un QTimer avec une minuterie de zéro. Vous pouvez créer des traitements de tâche de fond plus sophistiqués en utilisant processEvents().

Voir aussi QApplication::quit(), exit() et processEvents().

void QEventLoop::exit ( int returnCode = 0 )

Demande à la boucle d'événements de se terminer avec un code de retour.

Après l'appel de cette fonction, la boucle d'événements sort de l'appel à exec(). La fonction exec() renvoie returnCode.

Par convention, un returnCode de zéro indique un succès et un code différent de zéro un échec.

Notez que contrairement à la fonction de la bibliothèque C du même nom, cette fonction rend la main à l'appelant : c'est le traitement des événements qui s'arrête.

Voir aussi QCoreApplication::quit(), quit() et exec().

bool QEventLoop::isRunning () const

Renvoie true si la boucle d'événements est en cours d'exécution ; sinon renvoie false. La boucle d'événements est considérée en cours d'exécution depuis l'appel à exec() jusqu'à l'appel à exit().

Voir aussi exec() et exit().

bool QEventLoop::processEvents ( ProcessEventsFlags flags = AllEvents )

Traite les événements en attente correspondant à flags jusqu'à ce que tous les événements soient traités. Renvoie true si les événements en attente ont été traités ; sinon renvoie false.

Cette fonction est particulièrement utile si vous avez une opération longue à traiter et que vous voulez afficher son avancement sans autoriser les entrées utilisateur, par exemple en utilisant le drapeau ExcludeUserInputEvents.

Cette fonction est un simple habillage de QAbstractEventDispatcher::processEvents(). Voir la documentation de cette fonction pour plus de détails.

void QEventLoop::processEvents ( ProcessEventsFlags flags, int maxTime )

Traite les événements en attente correspondant à flags pendant un maximum de maxTime millisecondes ou jusqu'à ce que tous les événements soient traités, selon ce qui est le plus court. Cette fonction est particulièrement utile si vous avez une opération longue à traiter et que vous voulez afficher son avancement sans autoriser les entrées utilisateur, par exemple en utilisant le drapeau ExcludeUserInputEvents.

Notes : 

  • cette fonction ne traite pas les événements en continu ; elle se termine lorsque tous les événements disponibles ont été traités ;
  • l'activation du drapeau WaitForMoreEvents n'a pas de sens et sera ignoré.

void QEventLoop::quit () [slot]

Demande à la boucle d'événements de se terminer normalement.

Équivalent à exit(0).

Voir aussi QCoreApplication::quit() et exit().

void QEventLoop::wakeUp ()

Réveille la boucle d'événements.

Voir aussi QAbstractEventDispatcher::wakeUp().

Remerciements

Merci à Ilya Diallo pour la traduction et à Jonathan Courtois, Claude Leloup et Jacques Thery pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2020 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web