Sur cette page

QAbstractEventDispatcher Class

La classe `QAbstractEventDispatcher` fournit une interface permettant de gérer la file d'attente d'événements de Qt. En savoir plus...

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

QAbstractEventDispatcherV2

Types publics

Fonctions publiques

QAbstractEventDispatcher(QObject *parent = nullptr)
virtual ~QAbstractEventDispatcher()
bool filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
virtual void interrupt() = 0
virtual bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0
virtual void registerSocketNotifier(QSocketNotifier *notifier) = 0
(since 6.8) void registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
virtual void registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object) = 0
(since 6.8) Qt::TimerId registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
virtual QList<QAbstractEventDispatcher::TimerInfo> registeredTimers(QObject *object) const = 0
virtual int remainingTime(int timerId) = 0
QAbstractEventDispatcher::Duration remainingTime(Qt::TimerId timerId) const
void removeNativeEventFilter(QAbstractNativeEventFilter *filter)
(since 6.8) QList<QAbstractEventDispatcher::TimerInfoV2> timersForObject(QObject *object) const
virtual void unregisterSocketNotifier(QSocketNotifier *notifier) = 0
(since 6.8) bool unregisterTimer(Qt::TimerId timerId)
virtual bool unregisterTimer(int timerId) = 0
virtual bool unregisterTimers(QObject *object) = 0
virtual void wakeUp() = 0

Signaux

void aboutToBlock()
void awake()

Membres publics statiques

QAbstractEventDispatcher *instance(QThread *thread = nullptr)

Description détaillée

Un distributeur d’événements reçoit des événements provenant du système de fenêtrage et d’autres sources. Il les transmet ensuite à l’instance de QCoreApplication ou d’ QApplication pour traitement et distribution. QAbstractEventDispatcher offre un contrôle précis sur la distribution des événements.

Pour un contrôle simple du traitement des événements, utilisez QCoreApplication::processEvents().

Pour un contrôle plus précis de la boucle d'événements de l'application, appelez ` instance()` et appelez les fonctions de l'objet `QAbstractEventDispatcher` renvoyé. Si vous souhaitez utiliser votre propre instance de `QAbstractEventDispatcher` ou d’une sous-classe de `QAbstractEventDispatcher`, vous devez l’installer à l’aide de ` QCoreApplication::setEventDispatcher()` ou ` QThread::setEventDispatcher()` avant qu’ un distributeur d’événements par défaut n’ait été installé.

La boucle d'événements principale est lancée en appelant ` QCoreApplication::exec()` et arrêtée en appelant ` QCoreApplication::exit()`. Des boucles d'événements locales peuvent être créées à l'aide de ` QEventLoop`.

Les programmes qui effectuent des opérations longues peuvent appeler processEvents() avec une combinaison OR binaire de différentes valeurs de QEventLoop::ProcessEventsFlag pour contrôler quels événements doivent être transmis.

QAbstractEventDispatcher permet également l’intégration d’une boucle d’événements externe à la boucle d’événements Qt.

Voir également QEventLoop, QCoreApplication et QThread.

Documentation sur les types de membres

[alias] QAbstractEventDispatcher::Duration

Un type de type « std::chrono::duration » utilisé dans diverses API de cette classe. Ce type a pour but de faciliter une éventuelle transition vers une granularité supérieure ou inférieure.

Sur toutes les plateformes actuelles, il s’agit de ` nanoseconds`.

Documentation des fonctions membres

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

Crée un nouveau distributeur d'événements avec l'parent spécifié.

[virtual noexcept] QAbstractEventDispatcher::~QAbstractEventDispatcher()

Supprime le répartiteur d'événements.

[signal] void QAbstractEventDispatcher::aboutToBlock()

Ce signal est émis avant que la boucle d'événements n'appelle une fonction susceptible de se bloquer.

Voir également awake().

[signal] void QAbstractEventDispatcher::awake()

Ce signal est émis lorsque la boucle d'événements revient d'une fonction susceptible de se bloquer.

Voir également wakeUp() et aboutToBlock().

bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)

Envoie message via les filtres d'événements définis par installNativeEventFilter(). Cette fonction renvoie true dès qu'un filtre d'événement renvoie true, et false dans le cas contraire pour indiquer que le traitement de l'événement doit se poursuivre.

Les sous-classes de QAbstractEventDispatcher doivent appeler cette fonction pour tous les messages reçus du système afin de garantir la compatibilité avec les extensions susceptibles d’être utilisées dans l’application. Le type de l’événement eventType est spécifique au plugin de plateforme choisi lors de l’exécution et peut être utilisé pour convertir le message vers le type approprié. Le pointeur result n’est utilisé que sous Windows et correspond au pointeur LRESULT.

Notez que le type de ` message ` dépend de la plate-forme. Voir ` QAbstractNativeEventFilter ` pour plus de détails.

Voir également installNativeEventFilter() et QAbstractNativeEventFilter::nativeEventFilter().

void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

Installe un filtre d'événements filterObj pour tous les événements natifs reçus par l'application.

Le filtre d'événements filterObj reçoit les événements via sa fonction nativeEventFilter(), qui est appelée pour tous les événements reçus par tous les threads.

La fonction nativeEventFilter() doit renvoyer true si l’événement doit être filtré (dans ce cas, bloqué). Elle doit renvoyer false pour permettre au traitement Qt normal de se poursuivre : l’événement natif peut alors être converti en QEvent et géré par le filtrage standard de Qt event, par exemple QObject::installEventFilter().

Si plusieurs filtres d’événements sont installés, c’est le filtre installé en dernier qui est activé en premier.

Remarque : la fonction de filtrage définie ici reçoit des messages natifs, c’est-à-dire des structures MSG ou XEvent.

Pour une portabilité maximale, vous devriez toujours essayer d’utiliser des objets QEvent et QObject::installEventFilter() dans la mesure du possible.

Voir également QObject::installEventFilter().

[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)

Renvoie un pointeur vers l’objet « event dispatcher » correspondant à l’ thread spécifié. Si thread est nullptr, le thread actuel est utilisé. Si aucun « event dispatcher » n’existe pour le thread spécifié, cette fonction renvoie nullptr.

Remarque : si Qt est compilé sans prise en charge des threads, l'argument thread est ignoré.

[pure virtual] void QAbstractEventDispatcher::interrupt()

Interrompt la gestion des événements. Le gestionnaire d'événements quittera la fonction ` processEvents()` dès que possible.

[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)

Traite les événements en attente qui correspondent à ` flags ` jusqu’à ce qu’il n’y ait plus d’événements à traiter. Renvoie ` true ` si un événement a été traité ; 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 l’intervention de l’utilisateur, en utilisant le drapeau QEventLoop::ExcludeUserInputEvents.

Si l’indicateur « QEventLoop::WaitForMoreEvents » est défini dans flags, le comportement de cette fonction est le suivant :

  • Si des événements sont disponibles, cette fonction revient après les avoir traités.
  • Si aucun événement n'est disponible, cette fonction attendra qu'il y en ait d'autres et retournera après avoir traité les nouveaux événements disponibles.

Si l'indicateur « QEventLoop::WaitForMoreEvents » n'est pas activé dans ` flags` et qu'aucun événement n'est disponible, cette fonction renvoie immédiatement une valeur.

Remarque : cette fonction ne traite pas les événements en continu ; elle renvoie une valeur une fois tous les événements disponibles traités.

[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)

Enregistre notifier auprès de la boucle d'événements. Les sous-classes doivent implémenter cette méthode pour associer un notificateur de socket à une autre boucle d'événements.

[since 6.8] void QAbstractEventDispatcher::registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)

Enregistre un temporisateur avec les paramètres ` timerId`, ` interval` et ` timerType ` spécifiés pour le ` object` donné.

Cette fonction a été introduite dans Qt 6.8.

Voir également unregisterTimer() et timersForObject().

[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)

Enregistrer un minuteur avec les paramètres ` timerId`, ` interval` et ` timerType ` spécifiés pour l'objet ` object` donné.

[since 6.8] Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)

Enregistre un minuteur avec les paramètres « interval » et « timerType » spécifiés pour l'« object » donné et renvoie l'identifiant du minuteur.

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

Cette fonction a été introduite dans Qt 6.8.

[pure virtual] QList<QAbstractEventDispatcher::TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const

Renvoie une liste des minuteries enregistrées pour object. La structure `TimerInfo` comporte les membres ` timerId`, ` interval` et ` timerType `.

Voir également Qt::TimerType.

[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)

Renvoie le temps restant en millisecondes pour l'timerId donné. Si le minuteur est inactif, la valeur renvoyée sera -1. Si le minuteur est arrivé à expiration, la valeur renvoyée sera 0.

Voir également Qt::TimerType.

QAbstractEventDispatcher::Duration QAbstractEventDispatcher::remainingTime(Qt::TimerId timerId) const

Renvoie le temps restant du minuteur avec l'timerId on indiquée. Si le minuteur est inactif, la valeur renvoyée sera négative. Si le minuteur a expiré, la valeur renvoyée sera 0.

Voir également ` Qt::TimerType`, ` registerTimer()` et ` unregisterTimer()`.

void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)

Supprime le filtre d'événement « filter » de cet objet. La requête est ignorée si ce filtre d'événement n'a pas été installé.

Tous les filtres d'événements associés à cet objet sont automatiquement supprimés lorsque celui-ci est détruit.

La suppression d’un filtre d’événement ne présente aucun risque, même pendant l’activation de ce filtre (c’est-à-dire même depuis la fonction nativeEventFilter()).

Voir également installNativeEventFilter() et QAbstractNativeEventFilter.

[since 6.8] QList<QAbstractEventDispatcher::TimerInfoV2> QAbstractEventDispatcher::timersForObject(QObject *object) const

Renvoie une liste des temporisateurs enregistrés pour object. La structure TimerInfoV2 comporte les membres timerId, interval et timerType.

Cette fonction a été introduite dans Qt 6.8.

Voir également Qt::TimerType, registerTimer() et unregisterTimer().

[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)

Désenregistre notifier auprès du répartiteur d'événements. Les sous-classes doivent réimplémenter cette méthode pour associer un notificateur de socket à une autre boucle d'événements. Les réimplémentations doivent appeler l'implémentation de base.

[since 6.8] bool QAbstractEventDispatcher::unregisterTimer(Qt::TimerId timerId)

Désenregistre le temporisateur avec l'timerId on indiquée. Renvoie « true » en cas de succès ; sinon, renvoie « false ».

Cette fonction a été introduite dans Qt 6.8.

Voir également registerTimer() et unregisterTimers().

[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)

Désenregistre le minuteur avec l'timerId indiquée. Renvoie true en cas de succès ; sinon, renvoie false.

Voir également registerTimer() et unregisterTimers().

[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)

Désenregistre tous les minuteurs associés à l'object donné. Renvoie true si tous les minuteurs ont été supprimés avec succès ; sinon, renvoie false.

Voir également unregisterTimer() et registeredTimers().

[pure virtual] void QAbstractEventDispatcher::wakeUp()

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

Remarque : cette fonction est sûre pour les threads.

Voir aussi awake().

© 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.