我對Qt事件的一般用法有一些疑問。我是Qt新手,我將嘗試製作自定義事件。我問的問題與此相關的文章:Qt 4.8: The Event SystemQt中的事件如何工作?
何時事件「發生」?
在Qt的內置事件中,鼠標點擊和按鍵被放入隊列中,然後在下一幀執行函數。對於自定義事件,我特別想知道這一點,因爲我不確定點擊鼠標時是否總是出現這種情況。對於自定義事件,是否將事件發送到隊列中,然後等待下一幀的event()函數處理?要創建自定義事件,您是否必須創建一個從QEvent繼承的類,並使用registerEventType()函數註冊一個事件?
這是標準過程,還是事件只是一個類?這個函數registerEventType()如何工作?自定義事件是否有QEvent :: Type?
這是使用registerEventType()函數時給出的介於1000和6563之間的數字嗎?什麼是事件的接收者?
它似乎在函數的參數像postEvent(),sendEvent()等,但是,我不知道這個對象是什麼。事件發生時執行的實際代碼在哪裏?
它是一個函數,還是它在QObject的event()函數中。
同樣的Qt事件的任何工作實例(包括內置或自定義)的行動將是有益的。
當你說「主循環」時,是否每秒運行一次循環來調用通過事件放入隊列的函數? – ZERO
像任何其他GUI程序一樣的Qt程序有一個主循環。你看不到它,但它存在於QApplication :: exec()函數中。它捕獲所有類型的事件(內部和外部)並按發生順序調用適當的處理程序。我不確定你的問題是什麼,說實話;)只是開火你的事件,並抓住他們。沒什麼大不了。 – cubuspl42
謝謝,現在幾乎所有東西都有意義。不幸的是,在QEvents的鏈接中沒有任何示例。可以說我想通過QEvent :: registerEventType()註冊一個事件。這個功能如何「註冊」一個事件?該課程是否跟蹤1000到65535之間的未註冊枚舉的私有數組?這個新的枚舉添加到QEvent :: Type下的枚舉列表中,所以我可以做類似QEvent :: CustomEvent的事情? – ZERO