qt中的事件处理

qt中的事件处理_第1张图片
QCoreApplication在exec时,会使用QEventLoop
QEventLoop在处理事件时,会调用事件分发器QAbstractEventDispatcher ,针对不同的平台,事件分发器有不同的实现

@startuml
class QCoreApplication
class QEventLoop
abstract class QAbstractEventDispatcher {
	{abstract} bool processEvents(QEventLoop::ProcessEventsFlags flags)
	{abstract} bool hasPendingEvents()
	{abstract} void registerSocketNotifier(QSocketNotifier *notifier)
	{abstract} void unregisterSocketNotifier(QSocketNotifier *notifier)
	{abstract} void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object)
	{abstract} bool unregisterTimer(int timerId)
	{abstract} bool unregisterTimers(QObject *object) 
	{abstract} QList registeredTimers(QObject *object) const
	{abstract} int remainingTime(int timerId) 
	{abstract} void wakeUp()
	{abstract} void interrupt()
	{abstract} void flush()
}
class QEventDispatcherGlib
class QEventDispatcherUNIX
class QEventDispatcherWin32
class QEventDispatcherWinRT


QCoreApplication ..> QEventLoop
QEventLoop ..> QAbstractEventDispatcher
QAbstractEventDispatcher <|-- QEventDispatcherGlib
QAbstractEventDispatcher <|-- QEventDispatcherUNIX
QAbstractEventDispatcher <|-- QEventDispatcherWin32
QAbstractEventDispatcher <|-- QEventDispatcherWinRT
@enduml

你可能感兴趣的:(Qt,qt,c++,开发语言)