QEventLoop Class
La classe QEventLoop permet d'entrer et de sortir d'une boucle d'événements. Plus d'informations...
| En-tête : | #include <QEventLoop> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | 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 |
Emplacements publics
Description détaillée
À tout moment, vous pouvez créer un objet QEventLoop et appeler exec() pour démarrer une boucle d'événements locale. À l'intérieur de la boucle d'événements, l'appel à exit() oblige exec() à revenir.
Voir également QAbstractEventDispatcher.
Documentation des types de membres
enum QEventLoop::ProcessEventsFlag
flags 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. Les événements DeferredDelete font l'objet d'un traitement particulier. Voir QObject::deleteLater() pour plus de détails. |
QEventLoop::ExcludeUserInputEvents | 0x01 | Ne pas traiter les événements de saisie de l'utilisateur, tels que ButtonPress et KeyPress. Notez que ces événements ne sont pas supprimés ; ils seront transmis la prochaine fois que processEvents() sera appelé sans l'option ExcludeUserInputEvents. |
QEventLoop::ExcludeSocketNotifiers | 0x02 | Ne pas traiter les événements de notification de socket. Notez que les événements ne sont pas rejetés ; ils seront transmis la prochaine fois que processEvents() sera appelé sans l'indicateur ExcludeSocketNotifiers. |
QEventLoop::WaitForMoreEvents | 0x04 | Attendre les événements si aucun événement en attente n'est disponible. |
Le type ProcessEventsFlags est un typedef pour QFlags<ProcessEventsFlag>. Il stocke une combinaison OU de valeurs ProcessEventsFlag.
Voir également processEvents().
Documentation des fonctions membres
[explicit] QEventLoop::QEventLoop(QObject *parent = nullptr)
Construit un objet de boucle d'événements avec l'adresse parent.
[virtual noexcept] QEventLoop::~QEventLoop()
Détruit l'objet 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 événementielle principale et attend que exit() soit appelé. Renvoie la valeur qui a été transmise à exit().
Si flags est spécifié, seuls les événements des types autorisés par flags seront traités.
Il est nécessaire d'appeler cette fonction pour commencer à traiter les événements. La boucle d'événements principale reçoit les événements du système de fenêtres 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(). Dans un cas particulier, les widgets modaux tels que QMessageBox peuvent être utilisés avant d'appeler exec(), car les widgets modaux utilisent leur propre boucle d'événements locale.
Pour que votre application effectue un traitement au ralenti (c'est-à-dire qu'elle exécute une fonction spéciale chaque fois qu'il n'y a pas d'événements en attente), utilisez un QChronoTimer avec un délai d'attente de 0ns. Des schémas de traitement au ralenti plus sophistiqués peuvent être réalisés en utilisant processEvents().
Voir aussi QCoreApplication::quit(), exit() et processEvents().
[slot] void QEventLoop::exit(int returnCode = 0)
Indique à la boucle d'événements de quitter avec un code de retour.
Après l'appel de cette fonction, la boucle d'événements revient à l'appel de exec(). La fonction exec() renvoie returnCode.
Par convention, un returnCode de 0 signifie un succès, et toute valeur non nulle indique une erreur.
Notez que , contrairement à la fonction du même nom de la bibliothèque C, cette fonction renvoie à l'appelant - c'est le traitement de l'événement 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 comme étant en cours d'exécution à partir du moment où exec() est appelé jusqu'à ce que exit() soit appelé.
bool QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)
Traite certains événements en attente qui correspondent à flags. 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 de longue durée et que vous souhaitez montrer sa progression sans autoriser l'entrée de l'utilisateur, c'est-à-dire en utilisant le drapeau ExcludeUserInputEvents.
Cette fonction est simplement une enveloppe pour QAbstractEventDispatcher::processEvents(). Voir la documentation de cette fonction pour plus de détails.
[since 6.7] void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)
Traite les événements en attente qui correspondent à flags jusqu'à ce que deadline ait expiré ou jusqu'à ce qu'il n'y ait plus d'événements à traiter, selon ce qui se produit en premier. Cette fonction est particulièrement utile si vous avez une opération de longue durée et que vous souhaitez montrer sa progression sans permettre à l'utilisateur d'intervenir, c'est-à-dire en utilisant l'indicateur ExcludeUserInputEvents.
Remarques :
- Cette fonction ne traite pas les événements en continu ; elle revient lorsque tous les événements disponibles ont été traités.
- La spécification de l'indicateur WaitForMoreEvents n'a aucun sens et sera ignorée.
Cette fonction a été introduite dans Qt 6.7.
void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)
Traite les événements en attente qui correspondent à flags pendant un maximum de maxTime millisecondes, ou jusqu'à ce qu'il n'y ait plus d'événements à traiter, la durée la plus courte étant retenue.
Équivalent à appeler :
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.
Identique à exit(0).
Voir aussi QCoreApplication::quit() et exit().
void QEventLoop::wakeUp()
Réveille 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.