The QEventLoop 类提供进入和离开事件循环的手段。 更多...
| 头: | #include <QEventLoop> |
| 继承: | QObject |
| enum | ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents, DeferredDeletion } |
| flags | ProcessEventsFlags |
| QEventLoop (QObject * parent = 0) | |
| ~QEventLoop () | |
| int | exec (ProcessEventsFlags flags = AllEvents) |
| void | exit (int returnCode = 0) |
| bool | isRunning () const |
| bool | processEvents (ProcessEventsFlags flags = AllEvents) |
| void | processEvents (ProcessEventsFlags flags , int maxTime ) |
| void | wakeUp () |
| void | quit () |
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
|
等待事件,若没有待决事件可用。 |
QEventLoop::DeferredDeletion
|
0x10
|
deprecated - do not use. |
ProcessEventsFlags 类型是 typedef 对于 QFlags <ProcessEventsFlag>。它存储 ProcessEventsFlag 值的 OR 组合。
另请参阅 processEvents ().
构造事件循环对象采用给定 parent .
销毁事件循环对象。
进入主事件循环并等待,直到 exit () 被调用。返回值被传递给 exit ().
若 flags 有指定,仅允许类型的事件通过 flags 会被处理。
有必要调用此函数以启动事件处理。主事件循环从窗口系统接收事件,并将其分派给应用程序 Widget。
一般来说,不能发生用户交互在调用 exec() 之前。作为特殊情况,模态 Widget 像 QMessageBox 可以使用在调用 exec() 之前,因为模态 Widget 使用它们自己的本地事件循环。
要使应用程序履行空闲处理 (即:执行特殊函数每当没有待决事件时),使用 QTimer 采用 0 超时。可以达成更完备空闲处理方案使用 processEvents ().
另请参阅 QApplication::quit (), exit (),和 processEvents ().
告诉事件循环,采用返回代码退出。
在此函数被调用之后,事件循环返回从调用 exec ()。 exec () 函数返回 returnCode .
按约定, returnCode 0 意味着成功,而任何非零值指示出错。
注意:不像同名 C 库函数,此函数 does 返回给调用者 -- 它停止事件处理。
另请参阅 QCoreApplication::quit (), quit (),和 exec ().
Returns true if the event loop is running; otherwise returns false. The event loop is considered running from the time when exec () 被调用直到 exit () 被调用。
处理待决事件匹配 flags until there are no more events to process. Returns true if pending events were handled; otherwise returns false.
此函数尤其有用,若有长时间运行操作且不允许用户输入想要展示其进度;即:通过使用 ExcludeUserInputEvents 标志。
此函数仅仅是包裹器为 QAbstractEventDispatcher::processEvents ()。见该函数的文档编制了解细节。
处理待决事件匹配 flags 对于最大 maxTime 毫秒,或直到没有更多要处理事件为止,以较短者为准。此函数尤其有用,若有长时间运行操作且不允许用户输入想要展示其进度,即:通过使用 ExcludeUserInputEvents 标志。
注意事项:
[slot]
void
QEventLoop::
quit
()
告诉事件循环要正常退出。
如同 exit(0)。
另请参阅 QCoreApplication::quit () 和 exit ().
唤醒事件循环。
另请参阅 QAbstractEventDispatcher::wakeUp ().