2016-11-30 70 views
1

我理解了以下有關的QApplication的exec功能:什麼是Qt中的事件循環?

QApplication的執行開始主事件循環。 它啓動GUI。它處理信號並在接收它們時調用適當的時隙。它等待直到退出被調用並返回在退出時設置的值。

現在,當我們說事件循環時,是否表示在Qt的內部代碼中有一些while循環運行,並且在while循環中寫入了處理信號和槽的方法?

+1

事件循環意味着您的代碼不斷運行,將其視爲每次都會刷新,因此可以根據您的案例持續查看和更改。 –

+0

你可以把它看作一個事件驅動的程序,只是不斷地等待事件,並會做一些事情。事件循環用於大多數GUI和遊戲。在遊戲開發中有一個事件循環,因爲你需要連續檢查用戶是否做了什麼,需要發生一個事件。 –

+0

信號和插槽基本上是你的「如果發生這種情況」做「這個」。 –

回答

1

現在,當我們說事件循環,這是否意味着有一些,而 循環中的Qt的內部代碼運行,並且在while循環處理信號和槽的 方法寫的?

從某種意義上說,是的。現在大多數軟件都處於等待事件的狀態 - 用戶輸入,網絡流量,計時器事件,傳感器等 - 並相應地做出響應。

這不是特定於Qt。這是從Windows到Android到Arduino的常見設計模式。

+7

這不僅僅是「某種意義上的」,它的確是真的。 while循環可以在QEventLoop :: exec()中的$ QTDIR/src/corelib/kernel/qeventloop.cpp的第203行找到:while(!d-> exit.loadAcquire())processEvents(flags | WaitForMoreEvents | EventLoopExec ); –