QAbstractEventDispatcher Class
QAbstractEventDispatcher 클래스는 Qt의 이벤트 큐를 관리하기 위한 인터페이스를 제공합니다. 더 보기...
| 헤더: | #include <QAbstractEventDispatcher> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 상속: | QObject |
| 상속받는 클래스: |
- 상속받은 멤버를 포함한 모든 멤버 목록
- 사용 중단된 멤버
- QAbstractEventDispatcher는 이벤트 클래스의 일부입니다.
공개 유형
| struct | TimerInfoV2 |
| Duration |
공개 함수
| 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 |
신호
| void | aboutToBlock() |
| void | awake() |
정적 공용 멤버
| QAbstractEventDispatcher * | instance(QThread *thread = nullptr) |
상세 설명
이벤트 디스패처는 윈도우 시스템 및 기타 소스에서 이벤트를 수신합니다. 그런 다음, 처리 및 전달을 위해 해당 이벤트를 ` QCoreApplication ` 또는 ` QApplication ` 인스턴스로 전송합니다. `QAbstractEventDispatcher`는 이벤트 전달에 대한 세밀한 제어를 제공합니다.
이벤트 처리를 간단하게 제어하려면 QCoreApplication::processEvents()를 사용하십시오.
애플리케이션의 이벤트 루프를 더 세밀하게 제어하려면 instance()를 호출하고, 반환된 QAbstractEventDispatcher 객체의 함수를 호출하십시오. 자신만의 QAbstractEventDispatcher 인스턴스나 QAbstractEventDispatcher 하위 클래스를 사용하려면, 기본 이벤트 디스패처가 설치되기 전에 QCoreApplication::setEventDispatcher() 또는 QThread::setEventDispatcher()를 사용하여 이를 설치해야 합니다.
메인 이벤트 루프는 QCoreApplication::exec()를 호출하여 시작하고, QCoreApplication::exit()를 호출하여 중지합니다. 로컬 이벤트 루프는 QEventLoop 를 사용하여 생성할 수 있습니다.
장시간 작업이 수행되는 프로그램은 다양한 QEventLoop::ProcessEventsFlag 값을 비트별 OR 연산으로 조합하여 processEvents()를 호출함으로써, 전달될 이벤트를 제어할 수 있습니다.
QAbstractEventDispatcher를 사용하면 외부 이벤트 루프를 Qt 이벤트 루프와 통합할 수도 있습니다.
QEventLoop, QCoreApplication 및 QThread도 참조하십시오 .
멤버 유형 문서
[alias] QAbstractEventDispatcher::Duration
이 클래스의 다양한 API에서 사용되는 ` std::chrono::duration ` 유형입니다. 이 유형은 더 높은 또는 더 낮은 세분성 수준으로의 전환을 용이하게 하기 위해 존재합니다.
현재 모든 플랫폼에서 이 타입은 ` nanoseconds`입니다.
멤버 함수 문서
[explicit] QAbstractEventDispatcher::QAbstractEventDispatcher(QObject *parent = nullptr)
지정된 parent 를 사용하여 새로운 이벤트 디스패처를 생성합니다.
[virtual noexcept] QAbstractEventDispatcher::~QAbstractEventDispatcher()
이벤트 디스패처를 삭제합니다.
[signal] void QAbstractEventDispatcher::aboutToBlock()
이 신호는 이벤트 루프가 차단될 가능성이 있는 함수를 호출하기 전에 발생합니다.
awake()도 참조하십시오 .
[signal] void QAbstractEventDispatcher::awake()
이 신호는 차단될 가능성이 있는 함수에서 이벤트 루프가 반환된 후에 발생합니다.
wakeUp() 및 aboutToBlock()도 참조하십시오 .
bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result)
installNativeEventFilter() 함수에 의해 설정된 이벤트 필터를 통해 message 를 전달합니다. 이 함수는 이벤트 필터가 true 를 반환하는 즉시 true 를 반환하며, 그렇지 않은 경우 이벤트 처리를 계속해야 함을 나타내기 위해 false를 반환합니다.
QAbstractEventDispatcher 의 서브클래스는 애플리케이션에서 사용될 수 있는 모든 확장 기능과의 호환성을 보장하기 위해 시스템에서 수신된 모든 메시지에 대해 이 함수를 호출해야 합니다. eventType 이벤트의 유형은 런타임에 선택된 플랫폼 플러그인에 따라 다르며, 메시지를 올바른 유형으로 형변환하는 데 사용할 수 있습니다. result 포인터는 Windows에서만 사용되며, LRESULT 포인터에 해당합니다.
message 의 유형은 플랫폼에 따라 다르다는 점에 유의하십시오. 자세한 내용은 QAbstractNativeEventFilter 를 참조하십시오.
installNativeEventFilter() 및 QAbstractNativeEventFilter::nativeEventFilter()도 참조하십시오 .
void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
애플리케이션이 수신하는 모든 네이티브 이벤트에 대해 이벤트 필터 ` filterObj `를 설치합니다.
이벤트 필터 ` filterObj `은 ` nativeEventFilter()` 함수를 통해 이벤트를 수신하며, 이 함수는 모든 스레드에서 수신된 모든 이벤트에 대해 호출됩니다.
nativeEventFilter() 함수는 이벤트를 필터링(이 경우 중지)해야 하는 경우 true를 반환해야 합니다. 정상적인 Qt 처리가 계속되도록 하려면 false를 반환해야 합니다. 그러면 네이티브 이벤트는 QEvent 로 변환되어 표준 Qt event 필터링(예: QObject::installEventFilter())을 통해 처리될 수 있습니다.
여러 이벤트 필터가 설정된 경우, 가장 마지막에 설정된 필터가 먼저 활성화됩니다.
참고: 여기에 설정된 필터함수는 네이티브 메시지, 즉 MSG 또는 XEvent 구조체를 수신합니다.
이식성을 극대화하려면 가능한 한 항상 QEvent 객체와 QObject::installEventFilter()를 사용해야 합니다.
QObject::installEventFilter()도 참조하십시오 .
[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)
지정된 스레드 thread 에 대한 이벤트 디스패처 객체의 포인터를 반환합니다. ` thread `가 ` nullptr`인 경우, 현재 스레드가 사용됩니다. 지정된 스레드에 대한 이벤트 디스패처가 존재하지 않으면, 이 함수는 ` nullptr`를 반환합니다.
참고: Qt가 스레드 지원 없이 빌드된 경우, ` thread ` 인자는 무시됩니다.
[pure virtual] void QAbstractEventDispatcher::interrupt()
이벤트 전달을 중단합니다. 이벤트 디스패처는 가능한 한 빨리 ` processEvents()`에서 반환됩니다.
[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
flags 와 일치하는 대기 중인 이벤트를 처리할 이벤트가 더 이상 없을 때까지 처리합니다. 이벤트가 처리된 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
이 함수는 장시간 실행되는 작업이 있을 때, ` QEventLoop::ExcludeUserInputEvents ` 플래그를 사용하여 사용자 입력을 허용하지 않으면서 진행 상황을 표시하고자 할 때 특히 유용합니다.
flags 에서 QEventLoop::WaitForMoreEvents 플래그가 설정된 경우, 이 함수의 동작은 다음과 같습니다:
- 사용 가능한 이벤트가 있는 경우, 이 함수는 해당 이벤트를 처리한 후 반환됩니다.
- 사용 가능한 이벤트가 없는 경우, 이 함수는 이벤트가 더 생길 때까지 대기한 후 새로 사용 가능한 이벤트를 처리한 뒤 반환합니다.
flags 에서 QEventLoop::WaitForMoreEvents 플래그가 설정되지 않았고 처리할 이벤트가 없는 경우, 이 함수는 즉시 반환됩니다.
참고: 이 함수는 이벤트를 지속적으로 처리하지 않으며, 사용 가능한 모든 이벤트를 처리한 후에 반환됩니다.
[pure virtual] void QAbstractEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
notifier 를 이벤트 루프에 등록합니다. 하위 클래스는 소켓 알림 기능을 다른 이벤트 루프에 연결하기 위해 이 메서드를 구현해야 합니다.
[since 6.8] void QAbstractEventDispatcher::registerTimer(Qt::TimerId timerId, QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
주어진 ` object`에 대해, 지정된 ` timerId`, ` interval` 및 ` timerType `을 사용하여 타이머를 등록합니다.
이 함수는 Qt 6.8에서 도입되었습니다.
unregisterTimer() 및 timersForObject()도 참조하십시오 .
[pure virtual] void QAbstractEventDispatcher::registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object)
주어진 object 에 대해, 지정된 timerId, interval 및 timerType 를 사용하여 타이머를 등록합니다.
[since 6.8] Qt::TimerId QAbstractEventDispatcher::registerTimer(QAbstractEventDispatcher::Duration interval, Qt::TimerType timerType, QObject *object)
지정된 interval 및 timerType 를 사용하여 주어진 object 에 대한 타이머를 등록하고, 타이머 ID를 반환합니다.
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.8에서 도입되었습니다.
[pure virtual] QList<QAbstractEventDispatcher::TimerInfo> QAbstractEventDispatcher::registeredTimers(QObject *object) const
object 에 등록된 타이머 목록을 반환합니다. TimerInfo 구조체에는 timerId, interval 및 timerType 멤버가 있습니다.
Qt::TimerType도 참조하십시오 .
[pure virtual] int QAbstractEventDispatcher::remainingTime(int timerId)
지정된 ` timerId`의 남은 시간을 밀리초 단위로 반환합니다. 타이머가 비활성 상태인 경우 반환 값은 -1이 됩니다. 타이머가 만료된 경우 반환 값은 0이 됩니다.
Qt::TimerType도 참조하십시오 .
QAbstractEventDispatcher::Duration QAbstractEventDispatcher::remainingTime(Qt::TimerId timerId) const
지정된 timerId 에 대한 타이머의 남은 시간을 반환합니다. 타이머가 비활성 상태인 경우, 반환 값은 음수가 됩니다. 타이머가 만료된 경우, 반환 값은 0이 됩니다.
Qt::TimerType, registerTimer() 및 unregisterTimer()도 참조하십시오 .
void QAbstractEventDispatcher::removeNativeEventFilter(QAbstractNativeEventFilter *filter)
이 객체에서 이벤트 필터 filter 를 제거합니다. 해당 이벤트 필터가 설치되어 있지 않은 경우, 이 요청은 무시됩니다.
이 객체가 소멸되면 이 객체에 대한 모든 이벤트 필터가 자동으로 제거됩니다.
이벤트 필터가 활성화된 상태(즉, nativeEventFilter() 함수 내부에서도)라 하더라도 이벤트 필터를 제거하는 것은 항상 안전합니다.
installNativeEventFilter() 및 QAbstractNativeEventFilter도 참조하십시오 .
[since 6.8] QList<QAbstractEventDispatcher::TimerInfoV2> QAbstractEventDispatcher::timersForObject(QObject *object) const
object 에 등록된 타이머 목록을 반환합니다. TimerInfoV2 구조체에는 timerId, interval 및 timerType 멤버가 있습니다.
이 함수는 Qt 6.8에서 도입되었습니다.
Qt::TimerType, registerTimer() 및 unregisterTimer()도 참조하십시오 .
[pure virtual] void QAbstractEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
이벤트 디스패처에서 ` notifier `의 등록을 해제합니다. 하위 클래스는 소켓 알림기를 다른 이벤트 루프에 연결하기 위해 이 메서드를 재구현해야 합니다. 재구현 시에는 기본 구현을 호출해야 합니다.
[since 6.8] bool QAbstractEventDispatcher::unregisterTimer(Qt::TimerId timerId)
지정된 ` timerId`에 대한 타이머 등록을 해제합니다. 성공하면 ` true `을 반환하고, 그렇지 않으면 ` false`을 반환합니다.
이 함수는 Qt 6.8에서 도입되었습니다.
registerTimer() 및 unregisterTimers()도 참조하십시오 .
[pure virtual] bool QAbstractEventDispatcher::unregisterTimer(int timerId)
지정된 timerId 에 대한 타이머 등록을 해제합니다. 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.
registerTimer() 및 unregisterTimers()도 참조하십시오 .
[pure virtual] bool QAbstractEventDispatcher::unregisterTimers(QObject *object)
지정된 object 와 관련된 모든 타이머의 등록을 해제합니다. 모든 타이머가 성공적으로 제거된 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
unregisterTimer() 및 registeredTimers()도 참조하십시오 .
[pure virtual] void QAbstractEventDispatcher::wakeUp()
이벤트 루프를 깨웁니다.
참고: 이 함수는 스레드 안전합니다.
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.