Sur cette page

QEventLoop Class

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

En-tête : #include <QEventLoop>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QObject

Types publics

enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents }
flags ProcessEventsFlags

Fonctions publiques

QEventLoop(QObject *parent = nullptr)
virtual ~QEventLoop()
int exec(QEventLoop::ProcessEventsFlags flags = AllEvents)
bool isRunning() const
bool processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)
(since 6.7) void processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)
void processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)
void wakeUp()

Fonctions publiques réimplémentées

virtual bool event(QEvent *event) override

Slots publics

void exit(int returnCode = 0)
void quit()

Description détaillée

À tout moment, vous pouvez créer un objet QEventLoop et appeler la fonction exec() sur celui-ci pour démarrer une boucle d'événements locale. Depuis l'intérieur de la boucle d'événements, l'appel de la fonction exit() forcera la fonction exec() à se terminer.

Voir également QAbstractEventDispatcher.

Documentation sur les types de membres

enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags

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

ConstanteValeurDescription
QEventLoop::AllEvents0x00Tous les événements. Notez que les événements « DeferredDelete » sont traités de manière particulière. Voir QObject::deleteLater() pour plus de détails.
QEventLoop::ExcludeUserInputEvents0x01Ne pas traiter les événements liés aux entrées utilisateur, tels que ButtonPress et KeyPress. Notez que ces événements ne sont pas ignorés ; ils seront transmis lors du prochain appel à processEvents() sans le drapeau ExcludeUserInputEvents.
QEventLoop::ExcludeSocketNotifiers0x02Ne traitez pas les événements de notification de socket. Notez que ces événements ne sont pas ignorés ; ils seront transmis lors du prochain appel à la fonction processEvents() sans le drapeau ExcludeSocketNotifiers.
QEventLoop::WaitForMoreEvents0x04Attendez que des événements soient disponibles s’il n’y en a pas en attente.

Le type `ProcessEventsFlags` est un `typedef` pour ` QFlags<ProcessEventsFlag>`. Il stocke une combinaison OR de valeurs `ProcessEventsFlag`.

Voir également la fonction ` processEvents()`.

Documentation des fonctions membres

[explicit] QEventLoop::QEventLoop(QObject *parent = nullptr)

Crée un objet de boucle d'événements à partir de l'parent on fournie.

[virtual noexcept] QEventLoop::~QEventLoop()

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

[override virtual] bool QEventLoop::event(QEvent *event)

Réimplémente : QObject::event(QEvent *e).

int QEventLoop::exec(QEventLoop::ProcessEventsFlags flags = AllEvents)

Entre dans la boucle d'événements principale et attend que la fonction ` exit()` soit appelée. Renvoie la valeur qui a été transmise à la fonction ` exit()`.

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

Il est nécessaire d’appeler cette fonction pour lancer la gestion des événements. La boucle d’événements principale reçoit les événements du système de fenêtrage et les distribue aux widgets de l’application.

En règle générale, aucune interaction avec l'utilisateur ne peut avoir lieu avant l'appel à exec(). À titre d'exception, les widgets modaux, tels que QMessageBox, peuvent être utilisés avant l'appel à exec(), car ils utilisent leur propre boucle d'événements locale.

Pour que votre application effectue un traitement en veille (c'est-à-dire qu'elle exécute une fonction spécifique lorsqu'il n'y a pas d'événements en attente), utilisez un ` QChronoTimer ` avec un délai d'expiration de 0 ns. Des schémas de traitement en veille plus sophistiqués peuvent être mis en œuvre à l'aide de ` processEvents()`.

Voir également QCoreApplication::quit(), exit() et processEvents().

[slot] void QEventLoop::exit(int returnCode = 0)

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

Une fois cette fonction appelée, la boucle d'événements revient de l'appel à ` exec()`. La fonction ` exec()` renvoie ` returnCode`.

Par convention, une valeur de « returnCode » égale à 0 signifie que l'opération a réussi, tandis que toute valeur différente de zéro indique une erreur.

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

Voir également 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 comme en cours d'exécution à partir du moment où la fonction ` exec()` est appelée jusqu'à ce que la fonction ` exit()` soit appelée.

Voir également exec() et exit().

bool QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)

Traite certains événements en attente qui correspondent à flags. Renvoie true si des événements en attente ont été traités ; sinon, renvoie false.

Cette fonction est particulièrement utile si vous effectuez une opération de longue durée et que vous souhaitez afficher sa progression sans autoriser les entrées de l’utilisateur, c’est-à-dire en utilisant le drapeau ExcludeUserInputEvents.

Cette fonction n’est qu’une enveloppe de la fonction QAbstractEventDispatcher::processEvents(). Pour plus de détails, consultez la documentation de cette fonction.

[since 6.7] void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)

Traite les événements en attente correspondant à flags jusqu’à l’expiration de deadline ou jusqu’à ce qu’il n’y ait plus d’événements à traiter, selon la première éventualité. Cette fonction est particulièrement utile si vous effectuez une opération de longue durée et que vous souhaitez afficher sa progression sans autoriser les saisies de l’utilisateur, c’est-à-dire en utilisant le drapeau ExcludeUserInputEvents.

Remarques :

  • Cette fonction ne traite pas les événements en continu ; elle se termine une fois que tous les événements disponibles ont été traités.
  • Spécifier le drapeau « WaitForMoreEvents » n’a aucun sens et sera ignoré.

Cette fonction a été introduite dans Qt 6.7.

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

Traite les événements en attente correspondant à flags pendant au maximum maxTime millisecondes, ou jusqu'à ce qu'il n'y ait plus d'événements à traiter, la durée la plus courte étant retenue.

Équivaut à l'appel suivant :

processEvents(flags, QDeadlineTimer(maxTime));

Il s'agit d'une fonction surchargée.

[slot] void QEventLoop::quit()

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

Équivalent à exit(0).

Voir également QCoreApplication::quit() et exit().

void QEventLoop::wakeUp()

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

Voir aussi QAbstractEventDispatcher::wakeUp().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.