QAbstractEventDispatcher Class

QAbstractEventDispatcher 클래스는 Qt의 이벤트 큐를 관리하기 위한 인터페이스를 제공합니다. 더 보기...

Header: #include <QAbstractEventDispatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject
상속 대상:

QAbstractEventDispatcherV2

공용 유형

공용 함수

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

Signals

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 를 사용하여 만들 수 있습니다.

긴 연산을 수행하는 프로그램은 processEvents()를 다양한 QEventLoop::ProcessEventsFlag 값의 비트 또는 조합으로 호출하여 어떤 이벤트를 전달할지 제어할 수 있습니다.

또한 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() 함수는 이벤트를 필터링해야 하는 경우 참을 반환해야 합니다(이 경우 중지). 정상적인 Qt 처리를 계속하려면 false를 반환해야 합니다. 그러면 네이티브 이벤트는 QEvent 로 변환되어 표준 Qt event 필터링(예: QObject::installEventFilter()에 의해 처리될 수 있습니다.

이벤트 필터가 여러 개 설치되어 있는 경우 마지막에 설치된 필터가 먼저 활성화됩니다.

참고: 여기에 설정된 필터 함수는 네이티브 메시지, 즉 MSG 또는 XEvent 구조체를 수신합니다.

이식성을 극대화하려면 가능하면 항상 QEvent 객체와 QObject::installEventFilter()를 사용해야 합니다.

QObject::installEventFilter()도 참조하세요 .

[static] QAbstractEventDispatcher *QAbstractEventDispatcher::instance(QThread *thread = nullptr)

지정된 thread 에 대한 이벤트 디스패처 객체에 대한 포인터를 반환합니다. threadnullptr 인 경우 현재 스레드가 사용됩니다. 지정된 스레드에 대한 이벤트 디스패처가 존재하지 않으면 nullptr 을 반환합니다.

참고: Qt가 스레드 지원 없이 빌드된 경우, thread 인자는 무시됩니다.

[pure virtual] void QAbstractEventDispatcher::interrupt()

이벤트 디스패치를 중단합니다. 이벤트 디스패처는 가능한 한 빨리 processEvents()에서 반환됩니다.

[pure virtual] bool QAbstractEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)

처리할 이벤트가 더 이상 없을 때까지 flags 와 일치하는 보류 중인 이벤트를 처리합니다. 이벤트가 처리된 경우 true 를 반환하고, 그렇지 않으면 false 을 반환합니다.

이 함수는 오래 실행되는 작업이 있고 QEventLoop::ExcludeUserInputEvents 플래그를 사용하여 사용자 입력을 허용하지 않고 진행 상황을 표시하려는 경우에 특히 유용합니다.

QEventLoop::WaitForMoreEvents 플래그가 flags 에 설정된 경우 이 함수의 동작은 다음과 같습니다:

  • 이벤트를 사용할 수 있는 경우 이 함수는 이벤트를 처리한 후 반환합니다.
  • 사용 가능한 이벤트가 없는 경우 이 함수는 사용 가능한 이벤트가 더 있을 때까지 기다렸다가 새로 사용 가능한 이벤트를 처리한 후 반환합니다.

flagsQEventLoop::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)

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

지정된 object 에 대해 지정된 intervaltimerType 으로 타이머를 등록하고 타이머 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()도 참조하세요 .

© 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.