En esta página

QEventLoop Class

La clase QEventLoop proporciona un medio para entrar y salir de un bucle de eventos. Más...

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

Tipos Públicos

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

Funciones Públicas

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

Funciones Públicas Reimplementadas

virtual bool event(QEvent *event) override

Ranuras Públicas

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

Descripción Detallada

En cualquier momento, puedes crear un objeto QEventLoop y llamar a exec() sobre él para iniciar un bucle de eventos local. Desde dentro del bucle de eventos, llamar a exit() forzará el retorno de exec().

Ver también QAbstractEventDispatcher.

Documentación de tipos de miembros

enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags

Este enum controla los tipos de eventos procesados por las funciones processEvents().

ConstanteValorDescripción
QEventLoop::AllEvents0x00Todos los eventos. Tenga en cuenta que los eventos DeferredDelete se procesan de forma especial. Ver QObject::deleteLater() para más detalles.
QEventLoop::ExcludeUserInputEvents0x01No procesa eventos de entrada de usuario, como ButtonPress y KeyPress. Tenga en cuenta que los eventos no se descartan; se entregarán la próxima vez que se llame a processEvents() sin el indicador ExcludeUserInputEvents.
QEventLoop::ExcludeSocketNotifiers0x02No procesar eventos de notificador de socket. Tenga en cuenta que los eventos no se descartan; se entregarán la próxima vez que se llame a processEvents() sin el indicador ExcludeSocketNotifiers.
QEventLoop::WaitForMoreEvents0x04Esperar eventos si no hay eventos pendientes.

El tipo ProcessEventsFlags es un typedef para QFlags<ProcessEventsFlag>. Almacena una combinación OR de valores ProcessEventsFlag.

Vea también processEvents().

Documentación de Funciones Miembro

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

Construye un objeto de bucle de eventos con la dirección parent.

[virtual noexcept] QEventLoop::~QEventLoop()

Destruye el objeto de bucle de eventos.

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

Reimplementa: QObject::event(QEvent *e).

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

Entra en el bucle principal de eventos y espera hasta que se llame a exit(). Devuelve el valor que se pasó a exit().

Si se especifica flags, sólo se procesarán los eventos de los tipos permitidos por flags.

Es necesario llamar a esta función para iniciar el manejo de eventos. El bucle principal de eventos recibe eventos del sistema de ventanas y los envía a los widgets de la aplicación.

En general, ninguna interacción del usuario puede tener lugar antes de llamar a exec(). Como caso especial, los widgets modales como QMessageBox pueden usarse antes de llamar a exec(), porque los widgets modales usan su propio bucle de eventos local.

Para que tu aplicación realice un procesamiento en reposo (es decir, ejecute una función especial siempre que no haya eventos pendientes), utiliza QChronoTimer con un tiempo de espera de 0ns. Se pueden conseguir esquemas de procesamiento inactivo más sofisticados utilizando processEvents().

Véase también QCoreApplication::quit(), exit() y processEvents().

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

Indica al bucle de eventos que salga con un código de retorno.

Después de llamar a esta función, el bucle de eventos vuelve de la llamada a exec(). La función exec() devuelve returnCode.

Por convención, un returnCode de 0 significa éxito, y cualquier valor distinto de cero indica un error.

Tenga en cuenta que, a diferencia de la función de la biblioteca C del mismo nombre, esta función devuelve al invocador: es el procesamiento de eventos el que se detiene.

Véase también QCoreApplication::quit(), quit(), y exec().

bool QEventLoop::isRunning() const

Devuelve true si el bucle de eventos se está ejecutando; en caso contrario devuelve false. El bucle de eventos se considera en ejecución desde el momento en que se llama a exec() hasta que se llama a exit().

Véase también exec() y exit().

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

Procesa algunos eventos pendientes que coinciden con flags. Devuelve true si se han gestionado los eventos pendientes; en caso contrario, devuelve false.

Esta función es especialmente útil si tiene una operación de larga duración y desea mostrar su progreso sin permitir la entrada del usuario; es decir, utilizando la bandera ExcludeUserInputEvents.

Esta función es simplemente una envoltura para QAbstractEventDispatcher::processEvents(). Consulte la documentación de esa función para más detalles.

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

Procesa los eventos pendientes que coincidan con flags hasta que deadline haya expirado, o hasta que no haya más eventos que procesar, lo que ocurra primero. Esta función es especialmente útil si tiene una operación de larga duración y desea mostrar su progreso sin permitir la entrada del usuario, es decir, utilizando la bandera ExcludeUserInputEvents.

Notas:

  • Esta función no procesa los eventos de forma continua; vuelve después de que se hayan procesado todos los eventos disponibles.
  • Especificar la bandera WaitForMoreEvents no tiene sentido y será ignorada.

Esta función se introdujo en Qt 6.7.

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

Procesa los eventos pendientes que coincidan con flags durante un máximo de maxTime milisegundos, o hasta que no haya más eventos que procesar, lo que sea más corto.

Equivale a llamar:

processEvents(flags, QDeadlineTimer(maxTime));

Esta es una función sobrecargada.

[slot] void QEventLoop::quit()

Indica al bucle de eventos que salga normalmente.

Igual que exit(0).

Véase también QCoreApplication::quit() y exit().

void QEventLoop::wakeUp()

Activa el bucle de eventos.

Véase también 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.