The QEventLoop 類提供進入和離開事件循環的手段。 更多...
| 頭: | #include <QEventLoop> |
| qmake: | QT += core |
| 繼承: | QObject |
| enum | ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents } |
| flags | ProcessEventsFlags |
| QEventLoop (QObject * parent = Q_NULLPTR) | |
| ~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 () |
| virtual bool | event (QEvent * event ) |
| 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
|
等待事件,若沒有待決事件可用。 |
ProcessEventsFlags 類型是 typedef 對於 QFlags <ProcessEventsFlag>。它存儲 ProcessEventsFlag 值的 OR 組閤。
另請參閱 processEvents ().
構造事件循環對象采用給定 parent .
銷毀事件循環對象。
[虛擬]
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 ().