QAbstractEventDispatcher Class
La classe QAbstractEventDispatcher fournit une interface pour gérer la file d'attente des événements de Qt. Plus d'informations...
| En-tête : | #include <QAbstractEventDispatcher> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite : | QObject |
| Hérité par : |
- Liste de tous les membres, y compris les membres hérités
- Membres dépréciés
- QAbstractEventDispatcher fait partie de Event Classes.
Types publics
| struct | TimerInfoV2 |
| Duration |
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 du système de fenêtres et d'autres sources. Il les envoie ensuite à l'instance QCoreApplication ou QApplication pour traitement et livraison. QAbstractEventDispatcher permet un contrôle fin de la distribution des événements.
Pour un contrôle simple du traitement des événements, utilisez QCoreApplication::processEvents().
Pour un contrôle plus fin de la boucle d'événements de l'application, appelez instance() et appelez des fonctions sur l'objet QAbstractEventDispatcher qui est renvoyé. Si vous souhaitez utiliser votre propre instance de QAbstractEventDispatcher ou une sous-classe de QAbstractEventDispatcher, vous devez l'installer avec 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(). Les boucles d'événements locales peuvent être créées à l'aide de QEventLoop.
Les programmes qui effectuent de longues opérations peuvent appeler processEvents() avec une combinaison OU binaire de diverses valeurs QEventLoop::ProcessEventsFlag pour contrôler quels événements doivent être distribués.
QAbstractEventDispatcher permet également d'intégrer une boucle d'événements externe à la boucle d'événements de Qt.
Voir également QEventLoop, QCoreApplication, et QThread.
Documentation sur les types de membres
[alias] QAbstractEventDispatcher::Duration
Un type std::chrono::duration utilisé dans diverses API de cette classe. Ce type existe pour faciliter une éventuelle transition vers une granularité supérieure ou inférieure.
Dans toutes les plateformes actuelles, il s'agit de nanoseconds.
Documentation des fonctions membres
[explicit] QAbstractEventDispatcher::QAbstractEventDispatcher(QObject *parent = nullptr)
Construit un nouveau distributeur d'événements avec l'adresse parent.
[virtual noexcept] QAbstractEventDispatcher::~QAbstractEventDispatcher()
Détruit le distributeur 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 après que la boucle d'événements revient d'une fonction qui pourrait se bloquer.
Voir aussi wakeUp() et aboutToBlock().
bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Envoie message à travers 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 éventuellement utilisées dans l'application. Le type d'événement eventType est spécifique au plugin de la plateforme choisi au moment de l'exécution et peut être utilisé pour orienter le message vers le bon type. 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, arrêté). Elle doit renvoyer false pour permettre au traitement Qt normal de continuer : l'événement natif peut alors être traduit en QEvent et traité par le filtrage Qt event standard, par exemple QObject::installEventFilter().
Si plusieurs filtres d'événements sont installés, le dernier filtre installé 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 les objets QEvent et QObject::installEventFilter() dans la mesure du possible.
Voir aussi QObject::installEventFilter().
[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)
Renvoie un pointeur sur l'objet de distribution d'événements pour l'adresse thread spécifiée. Si thread est nullptr, le thread en cours est utilisé. Si aucun distributeur d'événements n'existe pour le thread spécifié, cette fonction renvoie nullptr.
Remarque : si Qt XML n'est pas compatible avec les threads, l'argument thread est ignoré.
[pure virtual] void QAbstractEventDispatcher::interrupt()
Interrompt l'envoi d'événements. Le distributeur d'événements reviendra de 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 avez une opération de longue durée et que vous souhaitez montrer sa progression sans permettre à l'utilisateur d'intervenir à l'aide de l'indicateur 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 que d'autres événements soient disponibles et reviendra 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 revient immédiatement.
Remarque : cette fonction ne traite pas les événements en continu ; elle revient après avoir traité tous les événements disponibles.
[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
Enregistre notifier dans la boucle d'événements. Les sous-classes doivent implémenter cette méthode pour lier 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 timer avec les valeurs spécifiées timerId, interval, et timerType pour la valeur donnée object.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi unregisterTimer() et timersForObject().
[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)
Enregistrer un timer avec les valeurs spécifiées timerId, interval, et timerType pour la valeur donnée object.
[since 6.8] Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
Enregistre un timer avec les adresses interval et timerType spécifiées pour l'adresse object donnée et renvoie l'identifiant du timer.
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 de temporisateurs enregistrés pour object. La structure TimerInfo possède des membres timerId, interval, et timerType.
Voir également Qt::TimerType.
[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)
Renvoie le temps restant en millisecondes avec la valeur timerId. Si la minuterie est inactive, la valeur retournée sera -1. Si la minuterie est en retard, la valeur retournée sera 0.
Voir aussi Qt::TimerType.
QAbstractEventDispatcher::Duration QAbstractEventDispatcher::remainingTime(Qt::TimerId timerId) const
Renvoie le temps restant de la minuterie avec la valeur timerId. Si la minuterie est inactive, la valeur renvoyée sera négative. Si la minuterie est en retard, la valeur retournée sera 0.
Voir aussi Qt::TimerType, registerTimer(), et unregisterTimer().
void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)
Supprime le filtre d'événement filter de cet objet. La demande est ignorée si un tel filtre n'a pas été installé.
Tous les filtres d'événements de cet objet sont automatiquement supprimés lorsque l'objet est détruit.
Il est toujours prudent de supprimer un filtre d'événement, même pendant l'activation du filtre d'événement (c'est-à-dire même à l'intérieur de la fonction nativeEventFilter()).
Voir également installNativeEventFilter() et QAbstractNativeEventFilter.
[since 6.8] QList<QAbstractEventDispatcher::TimerInfoV2> QAbstractEventDispatcher::timersForObject(QObject *object) const
Renvoie une liste de temporisateurs enregistrés pour object. La structure TimerInfoV2 a pour membres timerId, interval, et timerType.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi Qt::TimerType, registerTimer(), et unregisterTimer().
[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
Désenregistre notifier du distributeur d'événements. Les sous-classes doivent réimplémenter cette méthode pour lier 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)
Annule l'enregistrement de la minuterie avec l'adresse timerId. Renvoie true en cas de succès, sinon false.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi registerTimer() et unregisterTimers().
[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)
Annule l'enregistrement de la minuterie avec l'adresse timerId. Renvoie true en cas de succès, sinon false.
Voir aussi registerTimer() et unregisterTimers().
[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)
Désenregistre toutes les minuteries associées à l'adresse object. Renvoie true si toutes les minuteries ont été supprimées avec succès ; sinon, renvoie false.
Voir aussi unregisterTimer() et registeredTimers().
[pure virtual] void QAbstractEventDispatcher::wakeUp()
Réveille la boucle d'événements.
Remarque : cette fonction est sûre pour les threads.
Voir également 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.