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 ().