QAbstractEventDispatcher Class
Die Klasse QAbstractEventDispatcher bietet eine Schnittstelle zur Verwaltung der Qt-Ereigniswarteschlange. Mehr...
Kopfzeile: | #include <QAbstractEventDispatcher> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Vererbt: | QObject |
Vererbt von: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QAbstractEventDispatcher ist Teil von Event Classes.
Ö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) |
Detaillierte Beschreibung
Ein Ereignis-Dispatcher empfängt Ereignisse vom Fenstersystem und anderen Quellen. Er sendet sie dann an die Instanz QCoreApplication oder QApplication zur Verarbeitung und Zustellung. QAbstractEventDispatcher bietet feinkörnige Kontrolle über die Ereigniszustellung.
Für eine einfache Kontrolle der Ereignisverarbeitung verwenden Sie QCoreApplication::processEvents().
Für eine feinere Steuerung der Ereignisschleife der Anwendung rufen Sie instance() auf und rufen Funktionen für das QAbstractEventDispatcher-Objekt auf, das zurückgegeben wird. Wenn Sie Ihre eigene Instanz von QAbstractEventDispatcher oder einer QAbstractEventDispatcher-Unterklasse verwenden möchten, müssen Sie diese mit QCoreApplication::setEventDispatcher() oder QThread::setEventDispatcher() installieren , bevor ein Standard-Event-Dispatcher installiert wird.
Die Hauptereignisschleife wird durch den Aufruf QCoreApplication::exec() gestartet und durch den Aufruf QCoreApplication::exit() gestoppt. Lokale Ereignisschleifen können mit QEventLoop erstellt werden.
Programme, die lange Operationen durchführen, können processEvents() mit einer bitweisen ODER-Kombination verschiedener QEventLoop::ProcessEventsFlag Werte aufrufen, um zu steuern, welche Ereignisse geliefert werden sollen.
QAbstractEventDispatcher erlaubt auch die Integration einer externen Ereignisschleife mit der Qt-Ereignisschleife.
Siehe auch QEventLoop, QCoreApplication, und QThread.
Member-Typ-Dokumentation
[alias]
QAbstractEventDispatcher::Duration
Ein Typ std::chrono::duration
, der in verschiedenen API 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 er nanoseconds
.
Dokumentation der Mitgliedsfunktionen
[explicit]
QAbstractEventDispatcher::QAbstractEventDispatcher(QObject *parent = nullptr)
Konstruiert einen neuen Event-Dispatcher mit dem angegebenen parent.
[virtual noexcept]
QAbstractEventDispatcher::~QAbstractEventDispatcher()
Zerstört 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 ausgegeben, nachdem die Ereignisschleife von einer Funktion, die blockieren könnte, zurückkehrt.
Siehe auch wakeUp() und aboutToBlock().
bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Sendet message durch die Ereignisfilter, die mit installNativeEventFilter() gesetzt wurden. Diese Funktion gibt true
zurück, sobald ein Ereignisfilter true
zurückgibt, und 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 allen Erweiterungen, die in der Anwendung verwendet werden können, sicherzustellen. Der Typ des Ereignisses eventType ist spezifisch für das zur Laufzeit gewählte Plattform-Plugin und kann verwendet werden, um die Nachricht auf den richtigen Typ zu casten. Der Zeiger result wird nur unter Windows verwendet und entspricht dem LRESULT-Zeiger.
Beachten Sie, dass der Typ von message plattformabhängig ist. Siehe QAbstractNativeEventFilter für Details.
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 Ereignisse aufgerufen wird, die von allen Threads empfangen werden.
Die Funktion nativeEventFilter() sollte true zurückgeben, wenn das Ereignis gefiltert werden soll (in diesem Fall angehalten). Sie sollte false zurückgeben, damit die normale Qt-Verarbeitung fortgesetzt werden kann: Das native Ereignis kann dann in ein QEvent übersetzt und durch die Standard-Qt event Filterung, z.B. QObject::installEventFilter(), behandelt werden.
Wenn mehrere Ereignisfilter installiert sind, wird der zuletzt installierte Filter zuerst aktiviert.
Hinweis: Die hier eingestellte Filterfunktion empfängt native Nachrichten, d.h. MSG- oder XEvent-Strukturen.
Für maximale Portabilität sollten Sie immer versuchen, QEvent Objekte und QObject::installEventFilter() zu verwenden, wann immer dies möglich ist.
Siehe auch QObject::installEventFilter().
[static]
QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)
Gibt einen Zeiger auf das Ereignis-Dispatcher-Objekt für das angegebene thread zurück. Wenn thread gleich nullptr
ist, wird der aktuelle Thread verwendet. Wenn kein Event-Dispatcher für den angegebenen Thread existiert, gibt diese Funktion nullptr
zurück.
Hinweis: Wenn Qt ohne Thread-Unterstützung gebaut wurde, wird das Argument thread ignoriert.
[pure virtual]
void QAbstractEventDispatcher::interrupt()
Unterbricht die Ereignisabwicklung. Der Event-Dispatcher kehrt so schnell wie möglich von processEvents() zurück.
[pure virtual]
bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
Verarbeitet ausstehende Ereignisse, die mit flags übereinstimmen, bis es keine weiteren Ereignisse mehr zu verarbeiten gibt. Gibt true
zurück, wenn ein Ereignis verarbeitet wurde; andernfalls wird false
zurückgegeben.
Diese Funktion ist besonders nützlich, wenn Sie eine lang laufende Operation haben und deren Fortschritt anzeigen möchten, ohne dass Sie mit dem Flag QEventLoop::ExcludeUserInputEvents Benutzereingaben zulassen.
Wenn das Kennzeichen QEventLoop::WaitForMoreEvents in flags gesetzt ist, verhält sich diese Funktion wie folgt:
- Wenn Ereignisse verfügbar sind, kehrt diese Funktion nach deren Verarbeitung zurück.
- Wenn keine Ereignisse verfügbar sind, wartet diese Funktion, bis weitere Ereignisse verfügbar sind, und kehrt nach der Verarbeitung der neu verfügbaren Ereignisse zurück.
Wenn das Kennzeichen QEventLoop::WaitForMoreEvents in flags nicht gesetzt ist und keine Ereignisse verfügbar sind, kehrt diese Funktion sofort zurück.
Hinweis: Diese Funktion verarbeitet die Ereignisse nicht kontinuierlich; sie kehrt zurück, nachdem alle verfügbaren Ereignisse verarbeitet wurden.
[pure virtual]
void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
Registriert notifier mit 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)
Registriert einen Timer mit den angegebenen 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)
Registriert einen Timer mit den angegebenen timerId, interval und timerType für die angegebene object.
[since 6.8]
Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
Dies ist eine überladene Funktion.
Registriert einen Timer mit den angegebenen interval und timerType für die angegebene object und gibt die Timer-ID zurück.
Diese Funktion wurde in Qt 6.8 eingeführt.
[pure virtual]
QList<QAbstractEventDispatcher::TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const
Gibt eine Liste der registrierten Zeitgeber für object zurück. Die TimerInfo-Struktur hat timerId
, interval
und timerType
Mitglieder.
Siehe auch Qt::TimerType.
[pure virtual]
int QAbstractEventDispatcher::remainingTime(int timerId)
Gibt die verbleibende Zeit in Millisekunden mit dem angegebenen timerId zurück. Ist der Timer inaktiv, ist der Rückgabewert -1. Ist der Timer überfällig, ist 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 überfällig, ist der Rückgabewert 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 ein solcher Ereignisfilter nicht installiert wurde.
Alle Ereignisfilter für dieses Objekt werden automatisch entfernt, wenn das Objekt zerstört wird.
Es ist immer sicher, einen Ereignisfilter zu entfernen, auch während der Aktivierung des Ereignisfilters (d. h. auch 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 Zeitgeber für object zurück. Die TimerInfoV2 Struktur hat timerId
, interval
und timerType
Mitglieder.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch Qt::TimerType, registerTimer(), und unregisterTimer().
[pure virtual]
void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
Deregistriert notifier vom Ereignisverteiler. Unterklassen müssen diese Methode neu implementieren, um einen Socket Notifier in eine andere Ereignisschleife einzubinden. Reimplementierungen müssen die Basisimplementierung aufrufen.
[since 6.8]
bool QAbstractEventDispatcher::unregisterTimer(Qt::TimerId timerId)
Hebt die Registrierung des Zeitgebers 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 Zeitgebers mit dem angegebenen timerId auf. Gibt bei Erfolg true
zurück, andernfalls false
.
Siehe auch registerTimer() und unregisterTimers().
[pure virtual]
bool QAbstractEventDispatcher::unregisterTimers(QObject *object)
Hebt die Registrierung aller Zeitgeber auf, die mit dem angegebenen object verbunden sind. Gibt true
zurück, wenn alle Zeitgeber erfolgreich entfernt wurden; andernfalls false
.
Siehe auch unregisterTimer() und registeredTimers().
[pure virtual]
void QAbstractEventDispatcher::wakeUp()
Weckt die Ereignisschleife auf.
Hinweis: Diese Funktion ist thread-sicher.
Siehe auch awake().
© 2025 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.