- class QAbstractEventDispatcher#
《
QAbstractEventDispatcher
`>类提供了一个管理Qt事件队列的接口。更多...概要#
方法#
def
__init__()
def
registerTimer()
虚拟方法#
信号#
静态函数#
注意
此文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过创建https:/bugreports.qt.io/projects/PYSIDE上的问题单来告知我们。
详细描述#
事件分派器从窗口系统和其它源接收事件。然后将它们发送到
QCoreApplication
或QApplication实例进行处理和交付。QAbstractEventDispatcher
提供对事件交付的精细控制。对于事件处理的简单控制,请使用
processEvents()
。为了更好地控制应用程序的事件循环,请调用
instance()
并在返回的QAbstractEventDispatcher
对象上调用函数。如果您想使用自己的QAbstractEventDispatcher
实例或子类,必须使用setEventDispatcher()
或setEventDispatcher()
在默认事件分发器安装之前安装。主事件循环通过调用
exec()
启动,通过调用exit()
停止。可以使用QEventLoop
创建局部事件循环。执行长时间操作的程序可以通过调用
processEvents()
并使用各个ProcessEventsFlag
值的按位或组合来控制应传递哪些事件。QAbstractEventDispatcher
还可以将外部事件循环与Qt事件循环集成。构建一个具有给定
parent
的新事件分发器。- aboutToBlock()#
当事件循环在调用可能阻塞的函数之前发出此信号。
另请参阅
- awake()#
在事件循环从一个可能阻塞的函数返回后,此信号将被触发。
另请参阅
- closingDown()#
- filterNativeEvent(eventType, message, result)#
- 参数:
eventType –
QByteArray
message –
void
result –
qintptr
- 返回类型:
bool
通过由
installNativeEventFilter()
设置的事件过滤器发送message
。此函数在事件过滤器返回true
时返回true
,否则返回false
以指示应继续处理该事件。QAbstractEventDispatcher
的子类 必须 为从系统接收的所有消息调用此函数,以确保与任何可能用到的应用程序扩展兼容。事件类型eventType
是特定于运行时选择的平台插件的,并且可以用作将消息强制转换到正确的类型。结果指针仅在 Windows 上使用,并对应于 LRESULT 指针。请注意,
message
的类型取决于平台。有关详细信息,请参阅QAbstractNativeEventFilter
。- installNativeEventFilter(filterObj)#
- 参数:
filterObj –
QAbstractNativeEventFilter
为应用程序接收的所有原生事件安装事件过滤器
filterObj
。事件过滤器
filterObj
通过其nativeEventFilter()
函数接收事件,该函数用于处理所有线程收到的所有事件。如果需要过滤事件(在此情况下,停止事件),则
nativeEventFilter()
函数应返回true。如果应允许正常Qt处理继续:原生事件可以转换为QEvent
并由中国标Qtevent
过滤处理,例如installEventFilter()
。如果安装了多个事件过滤器,则最后安装的过滤器将首先启动。
注意
这里设置的过滤器函数接收原生消息,即MSG或XEvent结构。
为了最大化的可移植性,您应该尽量总是使用
QEvent
对象和installEventFilter()
。另请参阅
返回指定
thread
的事件调度器对象的指针。如果thread
是None
,则使用当前线程。如果没有指定线程的事件调度器,则此函数返回None
。注意
如果Qt没有构建线程支持,则忽略
thread
参数。- abstract interrupt()#
中断事件调度。事件调度器将尽快从
processEvents()
返回。- abstract processEvents(flags)#
- 参数:
flags – 合并了
ProcessEventsFlag
- 返回类型:
bool
处理所有等待事件,直到没有要处理的事件。如果处理了事件则返回
true
;否则返回false
。此功能特别适用于有长时间运行操作且希望在不允许用户输入的情况下显示其进度时使用
ExcludeUserInputEvents
标志。如果
flags
中设置了WaitForMoreEvents
标志,此函数的行为如下:如果有可用的事件,此函数将在处理完这些事件后返回。
如果没有可用事件,此函数将等待直到有更多事件可用,并在处理完新可用的事件后返回。
如果
flags
中没有设置WaitForMoreEvents
标志,且无事件可用,此函数将立即返回。注意
此函数不会连续处理事件;它将在处理完所有可用事件后返回。
- abstract registerSocketNotifier(notifier)#
- 参数:
notifier –
QSocketNotifier
将
notifier
与事件循环注册。子类必须实现此方法以将套接字通知器绑定到另一个事件循环。- abstract registerTimer(timerId, interval, timerType, object)#
注册一个指定了
timerId
、interval
和timerType
的事件object
。- registerTimer(interval, timerType, object)
为指定的
interval
和timerType
注册一个事件object
,并返回定时器ID。- abstract registeredTimers(object)#
- 参数:
object –
QObject
- 返回类型:
.
list
ofQAbstractEventDispatcher.TimerInfo
返回对象注册的计时器列表。
TimerInfo
结构体具有timerId
、interval
和timerType
成员。另请参阅
- abstract remainingTime(timerId)#
- 参数:
timerId – int
- 返回类型:
int
返回给定
timerId
的剩余时间(以毫秒为单位)。如果计时器不活跃,则返回值将为 -1。如果计时器已过期,则返回值为 0。另请参阅
- removeNativeEventFilter(filterObj)#
- 参数:
filterObj –
QAbstractNativeEventFilter
从该对象中删除事件过滤器
filter
。如果尚未安装此类事件过滤器,则请求将被忽略。当此对象被销毁时,自动删除该对象的所有事件过滤器。
在事件过滤器活动期间(即在
nativeEventFilter()
函数内部)安全地删除事件过滤器。- startingUp()#
- abstract unregisterSocketNotifier(notifier)#
- 参数:
notifier –
QSocketNotifier
从事件分发器中注销
notifier
。子类必须重新实现此方法,以将套接字通知器绑定到另一个事件循环。重新实现必须调用基本实现。- abstract unregisterTimer(timerId)#
- 参数:
timerId – int
- 返回类型:
bool
使用给定的
timerId
注销计时器。如果成功返回true
;否则返回false
。注销与特定对象关联的所有计时器。如果所有计时器都被成功移除,则返回
true
;否则返回false
。- 抽象 wakeUp()#
唤醒事件循环。
另请参阅