The QEventLoop 类提供进入和离开事件循环的手段。 更多...
| 头: | #include <QEventLoop> | 
| qmake: | QT += core | 
| 继承: | QObject | 
| enum | ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents } | 
| flags | ProcessEventsFlags | 
| QEventLoop (QObject * parent = nullptr) | |
| virtual | ~QEventLoop () | 
| int | exec (QEventLoop::ProcessEventsFlags flags = AllEvents) | 
| void | exit (int returnCode = 0) | 
| bool | isRunning () const | 
| bool | processEvents (QEventLoop::ProcessEventsFlags flags = AllEvents) | 
| void | processEvents (QEventLoop::ProcessEventsFlags flags , int maxTime ) | 
| void | wakeUp () | 
| virtual bool | event (QEvent * event ) override | 
| void | quit () | 
| const QMetaObject | staticMetaObject | 
The QEventLoop 类提供进入和离开事件循环的手段。
在任何时候,可以创建 QEventLoop 对象并调用 exec () 当要启动本地事件循环时。从事件循环中,调用 exit () 将强制 exec () 以返回。
另请参阅 QAbstractEventDispatcher .
此枚举控制处理事件的类型通过 processEvents () 函数。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QEventLoop::AllEvents
								 | 
0x00
								 | 所有事件。注意: DeferredDelete 事件会被特殊处理。见 QObject::deleteLater () 了解更多细节。 | 
| 
QEventLoop::ExcludeUserInputEvents
								 | 
0x01
								 | 不处理用户输入事件,譬如 ButtonPress 和 KeyPress。注意,事件未被丢弃;会交付他们当下次 processEvents () 被调用时 (没有 ExcludeUserInputEvents 标志)。 | 
| 
QEventLoop::ExcludeSocketNotifiers
								 | 
0x02
								 | 不处理套接字通知事件。注意,事件未被丢弃;会交付他们当下次 processEvents () 被调用时 (没有 ExcludeSocketNotifiers 标志)。 | 
| 
QEventLoop::WaitForMoreEvents
								 | 
0x04
								 | 等待事件,若没有待决事件可用。 | 
ProcessEventsFlags 类型是 typedef 对于 QFlags <ProcessEventsFlag>。它存储 ProcessEventsFlag 值的 OR 组合。
另请参阅 processEvents ().
构造事件循环对象采用给定 parent .
[虚拟]
						
						QEventLoop::
						
							~QEventLoop
						
						()
						
					销毁事件循环对象。
[override virtual]
						
						
							bool
						
						QEventLoop::
						
							event
						
						(
						
							
								QEvent
							
						
						*
						event
						)
						
					重实现自 QObject::event ().
进入主事件循环并等待,直到 exit () 被调用。返回值被传递给 exit ().
若 flags 有指定,仅允许类型的事件通过 flags 会被处理。
有必要调用此函数以启动事件处理。主事件循环从窗口系统接收事件,并将其分派给应用程序 Widget。
一般来说,不能发生用户交互在调用 exec() 之前。作为特殊情况,模态 Widget 像 QMessageBox 可以使用在调用 exec() 之前,因为模态 Widget 使用它们自己的本地事件循环。
要使应用程序履行空闲处理 (即:执行特殊函数每当没有待决事件时),使用 QTimer 采用 0 超时。可以达成更完备空闲处理方案使用 processEvents ().
另请参阅 QCoreApplication::quit (), exit (),和 processEvents ().
告诉事件循环,采用返回代码退出。
在此函数被调用之后,事件循环返回从调用 exec ()。 exec () 函数返回 returnCode .
按约定, returnCode 0 意味着成功,而任何非零值指示出错。
注意:不像同名 C 库函数,此函数 does 返回给调用者 -- 它停止事件处理。
另请参阅 QCoreApplication::quit (), quit (),和 exec ().
						返回
						
true
						
						若事件循环正在运行;否则返回 false。认为事件循环开始运行当
						
							exec
						
						() 被调用直到
						
							exit
						
						() 被调用。
					
						处理待决事件匹配
						
							flags
						
						直到没有更多要处理事件为止。返回
						
true
						
						若待决事件被处理;否则返回
						
false
						
						.
					
此函数尤其有用,若有长时间运行操作且不允许用户输入想要展示其进度;即:通过使用 ExcludeUserInputEvents 标志。
此函数仅仅是包裹器为 QAbstractEventDispatcher::processEvents ()。见该函数的文档编制了解细节。
处理待决事件匹配 flags 对于最大 maxTime 毫秒,或直到没有更多要处理事件为止,以较短者为准。此函数尤其有用,若有长时间运行操作且不允许用户输入想要展示其进度,即:通过使用 ExcludeUserInputEvents 标志。
注意事项:
[slot]
						
						
							void
						
						QEventLoop::
						
							quit
						
						()
						
					告诉事件循环要正常退出。
如同 exit(0)。
另请参阅 QCoreApplication::quit () 和 exit ().
唤醒事件循环。
另请参阅 QAbstractEventDispatcher::wakeUp ().