이 페이지에서

QEventLoop Class

QEventLoop 클래스는 이벤트 루프에 진입하고 빠져나가는 방법을 제공합니다. 더 보기...

헤더: #include <QEventLoop>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속받는 항목: QObject

공개 타입

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

공개 함수

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

재구현된 공용 함수

virtual bool event(QEvent *event) override

공개 슬롯

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

상세 설명

언제든지 QEventLoop 객체를 생성하고, 해당 객체에 대해 ` exec()`를 호출하여 로컬 이벤트 루프를 시작할 수 있습니다. 이벤트 루프 내부에서 ` exit()`를 호출하면 ` exec()`가 강제로 반환됩니다.

QAbstractEventDispatcher도 참조하십시오 .

멤버 유형 문서

enum QEventLoop::ProcessEventsFlag
flags QEventLoop::ProcessEventsFlags

이 열거형은 ` processEvents()` 함수가 처리하는 이벤트의 유형을 제어합니다.

상수상수설명
QEventLoop::AllEvents0x00모든 이벤트. DeferredDelete 이벤트는 별도로 처리된다는 점에 유의하십시오. 자세한 내용은 QObject::deleteLater()을 참조하십시오.
QEventLoop::ExcludeUserInputEvents0x01ButtonPress 및 KeyPress와 같은 사용자 입력 이벤트는 처리하지 않습니다. 해당 이벤트가 폐기되는 것은 아니며, ExcludeUserInputEvents 플래그를 지정하지 않고 processEvents()가 다음에 호출될 때 전달됩니다.
QEventLoop::ExcludeSocketNotifiers0x02소켓 알림기 이벤트는 처리하지 마십시오. 이러한 이벤트가 폐기되는 것은 아니며, ExcludeSocketNotifiers 플래그 없이 processEvents()가 다음에 호출될 때 전달됩니다.
QEventLoop::WaitForMoreEvents0x04대기 중인 이벤트가 없는 경우 이벤트를 기다립니다.

ProcessEventsFlags 유형은 QFlags<ProcessEventsFlag>에 대한 typedef입니다. 이 유형은 ProcessEventsFlag 값들의 OR 조합을 저장합니다.

processEvents()도 참조하십시오 .

멤버 함수 설명서

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

지정된 parent 를 사용하여 이벤트 루프 객체를 생성합니다.

[virtual noexcept] QEventLoop::~QEventLoop()

이벤트 루프 객체를 삭제합니다.

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

QObject::event(QEvent *e)를 재구현합니다.

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

메인 이벤트 루프로 진입하여 exit()가 호출될 때까지 대기합니다. exit()에 전달된 값을 반환합니다.

flags 가 지정된 경우, flags 에서 허용하는 유형의 이벤트만 처리됩니다.

이벤트 처리를 시작하려면 이 함수를 호출해야 합니다. 메인 이벤트 루프는 윈도우 시스템으로부터 이벤트를 수신하여 이를 애플리케이션 위젯으로 전달합니다.

일반적으로 exec()를 호출하기 전에는 사용자 상호 작용이 발생할 수 없습니다. 특별한 경우로, QMessageBox 와 같은 모달 위젯은 자체적인 로컬 이벤트 루프를 사용하기 때문에 exec()를 호출하기 전에도 사용할 수 있습니다.

애플리케이션이 유휴 처리를 수행하도록 하려면(즉, 대기 중인 이벤트가 없을 때마다 특정 함수를 실행하도록 하려면), 타임아웃을 0ns로 설정한 QChronoTimer 를 사용하십시오. 더 정교한 유휴 처리 방식은 processEvents()를 사용하여 구현할 수 있습니다.

QCoreApplication::quit(), exit() 및 processEvents()도 참조하십시오 .

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

이벤트 루프가 반환 코드를 반환하며 종료되도록 지시합니다.

이 함수가 호출된 후, 이벤트 루프는 ` exec()` 호출에서 반환됩니다. ` exec()` 함수는 ` returnCode`를 반환합니다.

관례에 따라, returnCode 의 값이 0이면 성공을 의미하며, 0이 아닌 값은 오류를 나타냅니다.

동일한 이름을 가진 C 라이브러리 함수와는 달리, 이 함수는 호출자에게 반환되며, 이벤트 처리가 중지된다는 점에 유의하십시오.

QCoreApplication::quit(), quit() 및 exec()도 참조하십시오 .

bool QEventLoop::isRunning() const

이벤트 루프가 실행 중이면 ` true `를 반환하고, 그렇지 않으면 `false`를 반환합니다. 이벤트 루프는 ` exec()`가 호출된 시점부터 ` exit()`가 호출될 때까지 실행 중인 것으로 간주됩니다.

exec() 및 exit()도 참조하십시오 .

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

flags 에 해당하는 일부 대기 중인 이벤트를 처리합니다. 대기 중인 이벤트가 처리된 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

이 함수는 실행 시간이 오래 걸리는 작업이 있을 때, 사용자 입력을 허용하지 않고 진행 상황을 표시하고자 할 때(즉, ExcludeUserInputEvents 플래그를 사용할 때) 특히 유용합니다.

이 함수는 단순히 QAbstractEventDispatcher::processEvents()을 래핑한 것입니다. 자세한 내용은 해당 함수의 문서를 참조하십시오.

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

` flags ` 조건에 부합하는 대기 중인 이벤트를, ` deadline `가 만료되거나 처리할 이벤트가 더 이상 없을 때까지(둘 중 먼저 발생하는 시점까지) 처리합니다. 이 함수는 장시간 실행되는 작업이 있을 때, 즉 ` ExcludeUserInputEvents ` 플래그를 사용하여 사용자 입력을 허용하지 않은 상태에서 진행 상황을 표시하고자 할 때 특히 유용합니다.

참고:

  • 이 함수는 이벤트를 지속적으로 처리하지 않으며, 처리 가능한 모든 이벤트가 처리된 후에 반환됩니다.
  • WaitForMoreEvents 플래그를 지정하는 것은 의미가 없으며 무시됩니다.

이 함수는 Qt 6.7에서 도입되었습니다.

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

flags 와 일치하는 대기 중인 이벤트를 최대 maxTime 밀리초 동안, 또는 처리할 이벤트가 더 이상 없을 때까지(둘 중 더 짧은 시간까지) 처리합니다.

다음 호출과 동일합니다:

processEvents(flags, QDeadlineTimer(maxTime));

이 함수는 오버로드된 함수입니다.

[slot] void QEventLoop::quit()

이벤트 루프가 정상적으로 종료되도록 지시합니다.

exit(0)과 동일합니다.

QCoreApplication::quit() 및 exit()도 참조하십시오 .

void QEventLoop::wakeUp()

이벤트 루프를 깨웁니다.

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.