QAbstractEventDispatcher Class
Die Klasse „QAbstractEventDispatcher“ bietet eine Schnittstelle zur Verwaltung der Qt-Ereigniswarteschlange. Mehr...
| Header: | #include <QAbstractEventDispatcher> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Erbt von: | QObject |
| Vererbt an: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QAbstractEventDispatcher ist Teil der Ereignisklassen.
Öffentliche Typen
| struct | TimerInfoV2 |
| Duration |
Öffentliche Funktionen
| 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 |
Signale
| void | aboutToBlock() |
| void | awake() |
Statische öffentliche Mitglieder
| QAbstractEventDispatcher * | instance(QThread *thread = nullptr) |
Ausführliche Beschreibung
Ein Ereignis-Dispatcher empfängt Ereignisse vom Fenstersystem und anderen Quellen. Anschließend leitet er diese zur Verarbeitung und Weiterleitung an die Instanz von „ QCoreApplication “ oder „ QApplication “ weiter. „QAbstractEventDispatcher“ ermöglicht eine fein abgestimmte Steuerung der Ereignisweiterleitung.
Für eine einfache Steuerung der Ereignisverarbeitung verwenden Sie ` QCoreApplication::processEvents()`.
Für eine feinere Steuerung der Ereignisschleife der Anwendung rufen Sie ` instance()` auf und nutzen Sie die Funktionen des zurückgegebenen `QAbstractEventDispatcher`-Objekts. Wenn Sie eine eigene Instanz von `QAbstractEventDispatcher` oder einer Unterklasse von `QAbstractEventDispatcher` verwenden möchten, müssen Sie diese mit ` QCoreApplication::setEventDispatcher()` oder ` QThread::setEventDispatcher()` installieren, bevor ein Standard-Ereignis-Dispatcher installiert wurde.
Die Haupt-Ereignisschleife wird durch den Aufruf von ` QCoreApplication::exec()` gestartet und durch den Aufruf von ` QCoreApplication::exit()` gestoppt. Lokale Ereignisschleifen können mit ` QEventLoop` erstellt werden.
Programme, die lang andauernde Operationen ausführen, können ` processEvents()` mit einer bitweisen ODER-Kombination verschiedener ` QEventLoop::ProcessEventsFlag `-Werte aufrufen, um zu steuern, welche Ereignisse übermittelt werden sollen.
QAbstractEventDispatcher ermöglicht zudem die Integration einer externen Ereignisschleife in die Qt-Ereignisschleife.
Siehe auch QEventLoop, QCoreApplication und QThread.
Dokumentation zu den Mitgliedstypen
[alias] QAbstractEventDispatcher::Duration
Ein Typ vom Typ „ std::chrono::duration “, der in verschiedenen APIs dieser Klasse verwendet wird. Dieser Typ dient dazu, einen möglichen Übergang zu einer höheren oder niedrigeren Granularität zu erleichtern.
Auf allen aktuellen Plattformen ist dies „ nanoseconds “.
Dokumentation der Member-Funktionen
[explicit] QAbstractEventDispatcher::QAbstractEventDispatcher(QObject *parent = nullptr)
Erstellt einen neuen Event-Dispatcher mit dem angegebenen „ parent “.
[virtual noexcept] QAbstractEventDispatcher::~QAbstractEventDispatcher()
Löscht den Ereignis-Dispatcher.
[signal] void QAbstractEventDispatcher::aboutToBlock()
Dieses Signal wird ausgesendet, bevor die Ereignisschleife eine Funktion aufruft, die blockieren könnte.
Siehe auch ` awake()`.
[signal] void QAbstractEventDispatcher::awake()
Dieses Signal wird ausgesendet, nachdem die Ereignisschleife von einer Funktion zurückgekehrt ist, die blockieren könnte.
Siehe auch „ wakeUp()“ und „ aboutToBlock()“.
bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Leitet „ message “ durch die Ereignisfilter, die mit „ installNativeEventFilter()“ festgelegt wurden. Diese Funktion gibt „ true “ zurück, sobald ein Ereignisfilter „ true “ zurückgibt, andernfalls „false“, um anzuzeigen, dass die Verarbeitung des Ereignisses fortgesetzt werden soll.
Unterklassen von ` QAbstractEventDispatcher ` müssen diese Funktion für alle vom System empfangenen Nachrichten aufrufen, um die Kompatibilität mit etwaigen in der Anwendung verwendeten Erweiterungen zu gewährleisten. Der Typ des Ereignisses ` eventType ` ist spezifisch für das zur Laufzeit ausgewählte Plattform-Plugin und kann verwendet werden, um die Nachricht in den richtigen Typ umzuwandeln. Der Zeiger ` result ` wird nur unter Windows verwendet und entspricht dem LRESULT-Zeiger.
Beachten Sie, dass der Typ von ` message ` plattformabhängig ist. Weitere Informationen finden Sie unter ` QAbstractNativeEventFilter `.
Siehe auch installNativeEventFilter() und QAbstractNativeEventFilter::nativeEventFilter().
void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
Installiert einen Ereignisfilter „ filterObj “ für alle nativen Ereignisse, die von der Anwendung empfangen werden.
Der Ereignisfilter „ filterObj “ empfängt Ereignisse über seine Funktion „ nativeEventFilter()“, die für alle von allen Threads empfangenen Ereignisse aufgerufen wird.
Die Funktion ` nativeEventFilter()` sollte `true` zurückgeben, wenn das Ereignis gefiltert (in diesem Fall gestoppt) werden soll. Sie sollte `false` zurückgeben, um die normale Qt-Verarbeitung fortzusetzen: Das native Ereignis kann dann in ein ` QEvent ` umgewandelt und durch die Standard-Qt-Filterung ` event ` verarbeitet werden, z. B. ` QObject::installEventFilter()`.
Sind mehrere Ereignisfilter installiert, wird der zuletzt installierte Filter zuerst aktiviert.
Hinweis: Die hier festgelegte Filterfunktion empfängt native Nachrichten, d. h. MSG- oder XEvent-Strukturen.
Um maximale Portabilität zu gewährleisten, sollten Sie nach Möglichkeit stets QEvent -Objekte und QObject::installEventFilter() verwenden.
Siehe auch ` QObject::installEventFilter()`.
[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)
Gibt einen Zeiger auf das Event-Dispatcher-Objekt für den angegebenen Thread ` thread` zurück. Wenn ` thread ` gleich ` nullptr` ist, wird der aktuelle Thread verwendet. Wenn für den angegebenen Thread kein Event-Dispatcher vorhanden ist, gibt diese Funktion ` nullptr` zurück.
Hinweis: Wenn Qt ohne Thread-Unterstützung kompiliert wurde, wird das Argument ` thread ` ignoriert.
[pure virtual] void QAbstractEventDispatcher::interrupt()
Unterbricht die Ereignisausgabe. Der Ereignis-Dispatcher kehrt so schnell wie möglich aus der Funktion „ processEvents()“ zurück.
[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
Verarbeitet ausstehende Ereignisse, die dem Flag „ flags “ entsprechen, bis keine Ereignisse mehr zu verarbeiten sind. Gibt „ true “ zurück, wenn ein Ereignis verarbeitet wurde; andernfalls wird „ false “ zurückgegeben.
Diese Funktion ist besonders nützlich, wenn Sie einen lang andauernden Vorgang ausführen und dessen Fortschritt anzeigen möchten, ohne Benutzereingaben zuzulassen, indem Sie das Flag „ QEventLoop::ExcludeUserInputEvents “ verwenden.
Ist das Flag „ QEventLoop::WaitForMoreEvents “ in ` flags` gesetzt, verhält sich diese Funktion wie folgt:
- Sind Ereignisse verfügbar, kehrt diese Funktion nach deren Verarbeitung zurück.
- Sind keine Ereignisse verfügbar, wartet diese Funktion, bis weitere verfügbar sind, und kehrt nach der Verarbeitung der neu verfügbaren Ereignisse zurück.
Ist das Flag „ QEventLoop::WaitForMoreEvents “ in ` flags` nicht gesetzt und sind keine Ereignisse verfügbar, kehrt diese Funktion sofort zurück.
Hinweis: Diese Funktion verarbeitet Ereignisse nicht kontinuierlich; sie kehrt zurück, nachdem alle verfügbaren Ereignisse verarbeitet wurden.
[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
Registriert „ notifier “ in der Ereignisschleife. Unterklassen müssen diese Methode implementieren, um einen Socket-Notifier in eine andere Ereignisschleife einzubinden.
[since 6.8] void QAbstractEventDispatcher::registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
Registriere einen Timer mit den angegebenen Werten für „ timerId “, „ interval “ und „ timerType “ für die angegebene „ object “.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch unregisterTimer() und timersForObject().
[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)
Registriere einen Timer mit den angegebenen Werten „ timerId “, „ interval “ und „ timerType “ für die angegebene „ object “.
[since 6.8] Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
Registriert einen Timer mit den angegebenen Werten „ interval “ und „ timerType “ für die angegebene „ object “ und gibt die Timer-ID zurück.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.8 eingeführt.
[pure virtual] QList<QAbstractEventDispatcher::TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const
Gibt eine Liste der registrierten Timer für „ object “ zurück. Die Struktur „TimerInfo“ enthält die Elemente „ timerId “, „ interval “ und „ timerType “.
Siehe auch Qt::TimerType.
[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)
Gibt die verbleibende Zeit in Millisekunden für den angegebenen „ timerId “ zurück. Ist der Timer inaktiv, beträgt der Rückgabewert -1. Ist der Timer abgelaufen, beträgt der Rückgabewert 0.
Siehe auch ` Qt::TimerType`.
QAbstractEventDispatcher::Duration QAbstractEventDispatcher::remainingTime(Qt::TimerId timerId) const
Gibt die verbleibende Zeit des Timers mit dem angegebenen „ timerId “ zurück. Ist der Timer inaktiv, ist der zurückgegebene Wert negativ. Ist der Timer abgelaufen, ist der zurückgegebene Wert 0.
Siehe auch „ Qt::TimerType“ , „ registerTimer()“ und „ unregisterTimer()“.
void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)
Entfernt den Ereignisfilter „ filter “ aus diesem Objekt. Die Anforderung wird ignoriert, wenn kein solcher Ereignisfilter installiert wurde.
Alle Ereignisfilter für dieses Objekt werden automatisch entfernt, wenn dieses Objekt zerstört wird.
Das Entfernen eines Ereignisfilters ist stets unbedenklich, selbst während der Aktivierung des Ereignisfilters (d. h. sogar innerhalb der Funktion ` nativeEventFilter()`).
Siehe auch „ installNativeEventFilter()“ und „ QAbstractNativeEventFilter “.
[since 6.8] QList<QAbstractEventDispatcher::TimerInfoV2> QAbstractEventDispatcher::timersForObject(QObject *object) const
Gibt eine Liste der registrierten Timer für „ object “ zurück. Die Struktur „ TimerInfoV2 “ verfügt über die Elemente „ timerId “, „ interval “ und „ timerType “.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch „ Qt::TimerType“ , „ registerTimer()“ und „ unregisterTimer()“.
[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
Entfernt „ notifier “ aus dem Ereignis-Dispatcher. Unterklassen müssen diese Methode neu implementieren, um einen Socket-Notifier in eine andere Ereignisschleife einzubinden. Bei einer Neuimplementierung muss die Basisimplementierung aufgerufen werden.
[since 6.8] bool QAbstractEventDispatcher::unregisterTimer(Qt::TimerId timerId)
Hebt die Registrierung des Timers mit dem angegebenen „ timerId “ auf. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch ` registerTimer()` und ` unregisterTimers()`.
[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)
Hebt die Registrierung des Timers mit dem angegebenen timerId auf. Gibt bei Erfolg true zurück; andernfalls wird false zurückgegeben.
Siehe auch ` registerTimer()` und ` unregisterTimers()`.
[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)
Hebt die Registrierung aller Timer auf, die mit dem angegebenen ` object` verknüpft sind. Gibt ` true ` zurück, wenn alle Timer erfolgreich entfernt wurden; andernfalls wird ` false` zurückgegeben.
Siehe auch ` unregisterTimer()` und ` registeredTimers()`.
[pure virtual] void QAbstractEventDispatcher::wakeUp()
Weckt die Ereignisschleife auf.
Hinweis: Diese Funktion ist threadsicher.
Siehe auch ` 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.