Qt 的事件系統

2021-10-19 05:23:38 字數 714 閱讀 9448

在 qt 裡面,事件就是繼承自抽象 qevent 類的乙個物件,它表示乙個應用內部或者乙個應用需要知道的外部活動的結果。任何乙個繼承自 qobject 的子類例項都可以接收和處理事件。

乙個事件發生,qt 會建立乙個能夠合適的描述這個事件的物件,這個物件繼承自 qevent. 然後通過呼叫 event() 函式將它傳送給乙個特定的 qobject 物件 或者 qobject 的子類.

event() 函式不處理這個事件,而是基於這個事件的型別進行傳送,它呼叫這個特定型別事件的管理者,並且會傳送乙個這個事件被接收或者被忽略的響應。

幾個常見的事件有,qmouseevent 和 qkeyevent(由桌面系統產生), qtimerevent 一些來自應用本身,一些來自其他地方。

大多數事件型別都有乙個特殊的類,尤其是 qresizeevent, qpaintevent, qmouseevent, qkeyevent, 和 qcloseevent. 每個類都繼承自 qevent 並且增加了自己特殊的事件函式。例如, qresizeevent 增加了 size() 和 oldsize() 函式來使 widgets 能發現知道自己的尺寸怎樣改變的。

一些類能夠支援不止一種事件型別。比如, qmouseevent 支援 滑鼠按鍵按下、雙擊、移動和其他相關操作.

每個事件都有乙個關聯的型別定義在 qevent::type 中, 這可以被用來作為乙個實用的執行時型別資訊源,可以快速的確定乙個給定的事件物件是構建自哪乙個子類。

Qt事件系統

在qt中,事件是繼承了虛擬類qevent 的物件,它代表了程式所發生的事情或者程式需要知道的乙個外部活動的結果。事件可以被任意 qobject 子類的例項接收和處理,是與widgets 當發生乙個事件,qt通過構造乙個適當的 qevent 子類的例項來建立事件物件來代表它,並通過呼叫vevent 函...

Qt 事件系統

2011 08 14 02 05 1529人閱讀收藏 qtevents function system qt是事件驅動的,程式每個動作都是由某個事件所觸發。qt事件的型別很多,我們可以通過檢視qt的 manual中的event system 和 qevent 來獲得各個事件的詳細資訊。posted ...

Qt 事件系統的解讀

突然想感慨幾句話 1 熟悉qt的框架的確不是一朝一夕的事情。首先要懂得c 的語法規則 其次還需要不斷摸索理解qt的框架。2 概念性的知識建構是是乙個逐級遞增的過程,這個過程就像打地基一樣不斷夯實。可能一本工具書,需要翻閱不僅僅是一遍兩遍。看十遍的效果和看一遍的效果是不一樣的。看五十遍和看十遍的效果更...