Auf dieser Seite

QEventLoop Class

Die Klasse `QEventLoop` bietet die Möglichkeit, eine Ereignisschleife zu betreten und zu verlassen. Mehr...

Header: #include <QEventLoop>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QObject

Öffentliche Typen

enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents }
flags ProcessEventsFlags

Öffentliche Funktionen

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()

Neu implementierte öffentliche Funktionen

virtual bool event(QEvent *event) override

Öffentliche Slots

void exit(int returnCode = 0)
void quit()

Ausführliche Beschreibung

Sie können jederzeit ein QEventLoop-Objekt erstellen und darauf die Funktion „ exec()“ aufrufen, um eine lokale Ereignisschleife zu starten. Wenn Sie innerhalb der Ereignisschleife die Funktion „ exit()“ aufrufen, wird die Funktion „ exec()“ zwangsweise beendet.

Siehe auch ` QAbstractEventDispatcher`.

Dokumentation zu Mitgliedstypen

enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags

Diese Enumeration steuert die Arten von Ereignissen, die von den Funktionen „ processEvents()“ verarbeitet werden.

KonstanteWertBeschreibung
QEventLoop::AllEvents0x00Alle Ereignisse. Beachten Sie, dass „ DeferredDelete “-Ereignisse speziell verarbeitet werden. Weitere Informationen finden Sie unter „ QObject::deleteLater()“.
QEventLoop::ExcludeUserInputEvents0x01Benutzereingabe-Ereignisse wie „ButtonPress“ und „KeyPress“ werden nicht verarbeitet. Beachten Sie, dass die Ereignisse nicht verworfen werden; sie werden beim nächsten Aufruf von ` processEvents()` ohne das Flag `ExcludeUserInputEvents` übermittelt.
QEventLoop::ExcludeSocketNotifiers0x02Verarbeiten Sie keine Socket-Notifier-Ereignisse. Beachten Sie, dass die Ereignisse nicht verworfen werden; sie werden beim nächsten Aufruf von ` processEvents()` ohne das Flag `ExcludeSocketNotifiers` übermittelt.
QEventLoop::WaitForMoreEvents0x04Warten Sie auf Ereignisse, wenn keine ausstehenden Ereignisse verfügbar sind.

Der Typ `ProcessEventsFlags` ist ein `typedef` für ` QFlags<ProcessEventsFlag>`. Er speichert eine ODER-Kombination von `ProcessEventsFlag`-Werten.

Siehe auch ` processEvents()`.

Dokumentation zu den Member-Funktionen

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

Erstellt ein Event-Loop-Objekt mit dem angegebenen „ parent “.

[virtual noexcept] QEventLoop::~QEventLoop()

Löscht das Event-Loop-Objekt.

[override virtual] bool QEventLoop::event(QEvent *event)

Implementiert: ` QObject::event(QEvent *e)`.

int QEventLoop::exec(QEventLoop::ProcessEventsFlags flags = AllEvents)

Wechselt in die Haupt-Ereignisschleife und wartet, bis „ exit()“ aufgerufen wird. Gibt den Wert zurück, der an „ exit()“ übergeben wurde.

Wenn ` flags ` angegeben sind, werden nur Ereignisse der Typen verarbeitet, die von der ` flags ` zugelassen werden.

Der Aufruf dieser Funktion ist erforderlich, um die Ereignisbehandlung zu starten. Die Hauptereignisschleife empfängt Ereignisse vom Fenstersystem und leitet diese an die Anwendungs-Widgets weiter.

Im Allgemeinen kann vor dem Aufruf von `exec()` keine Benutzerinteraktion stattfinden. Als Sonderfall können modale Widgets wie ` QMessageBox ` bereits vor dem Aufruf von `exec()` verwendet werden, da modale Widgets ihre eigene lokale Ereignisschleife nutzen.

Um in Ihrer Anwendung eine Leerlaufverarbeitung durchzuführen (d. h. eine spezielle Funktion auszuführen, wenn keine ausstehenden Ereignisse vorhanden sind), verwenden Sie ein ` QChronoTimer ` mit einem Timeout von 0 ns. Komplexere Leerlaufverarbeitungsschemata lassen sich mit ` processEvents()` realisieren.

Siehe auch ` QCoreApplication::quit()`, ` exit()` und ` processEvents()`.

[slot] void QEventLoop::exit(int returnCode = 0)

Weist die Ereignisschleife an, mit einem Rückgabewert zu beenden.

Nachdem diese Funktion aufgerufen wurde, kehrt die Ereignisschleife vom Aufruf von ` exec()` zurück. Die Funktion ` exec()` gibt ` returnCode` zurück.

Gemäß Konvention bedeutet ein ` returnCode ` von 0 Erfolg, während jeder Wert ungleich Null einen Fehler anzeigt.

Beachten Sie, dass diese Funktion – anders als die gleichnamige C-Bibliotheksfunktion – tatsächlich zum Aufrufer zurückkehrt; es ist die Ereignisverarbeitung, die beendet wird.

Siehe auch QCoreApplication::quit(), quit() und exec().

bool QEventLoop::isRunning() const

Gibt „ true “ zurück, wenn die Ereignisschleife läuft; andernfalls wird „false“ zurückgegeben. Die Ereignisschleife gilt als laufend ab dem Zeitpunkt, an dem „ exec()“ aufgerufen wird, bis zum Aufruf von „ exit()“.

Siehe auch ` exec()` und ` exit()`.

bool QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents)

Verarbeitet einige ausstehende Ereignisse, die dem Flag „ flags “ entsprechen. Gibt „ true “ zurück, wenn ausstehende Ereignisse verarbeitet wurden; 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, d. h. unter Verwendung des Flags „ ExcludeUserInputEvents “.

Diese Funktion ist lediglich eine Hülle für ` QAbstractEventDispatcher::processEvents()`. Weitere Informationen finden Sie in der Dokumentation zu dieser Funktion.

[since 6.7] void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)

Verarbeitet ausstehende Ereignisse, die dem Muster „ flags “ entsprechen, bis „ deadline “ abgelaufen ist oder bis keine Ereignisse mehr zu verarbeiten sind – je nachdem, was zuerst eintritt. Diese Funktion ist besonders nützlich, wenn Sie einen lang andauernden Vorgang ausführen und dessen Fortschritt anzeigen möchten, ohne Benutzereingaben zuzulassen, d. h. unter Verwendung des Flags „ ExcludeUserInputEvents “.

Hinweise:

  • Diese Funktion verarbeitet Ereignisse nicht kontinuierlich; sie kehrt zurück, sobald alle verfügbaren Ereignisse verarbeitet wurden.
  • Die Angabe des Flags „ WaitForMoreEvents “ ist sinnlos und wird ignoriert.

Diese Funktion wurde in Qt 6.7 eingeführt.

void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags, int maxTime)

Bearbeite ausstehende Ereignisse, die mit „ flags “ übereinstimmen, für maximal „ maxTime “ Millisekunden oder bis keine Ereignisse mehr zu bearbeiten sind – je nachdem, welcher Zeitraum kürzer ist.

Entspricht dem Aufruf von:

processEvents(flags, QDeadlineTimer(maxTime));

Dies ist eine überladene Funktion.

[slot] void QEventLoop::quit()

Weist die Ereignisschleife an, den Betrieb normal zu beenden.

Entspricht exit(0).

Siehe auch QCoreApplication::quit() und exit().

void QEventLoop::wakeUp()

Weckt die Ereignisschleife auf.

Siehe auch ` 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.