Qt學習之路 21 event

2021-07-14 11:43:10 字數 1083 閱讀 4021

2009-11-21 10:19:41

標籤:教程學習

c++qt教程qt

原始出處 、作者資訊和本宣告。否則將追究法律責任。

今天要說的是event()函式。記得之前曾經提到過這個函式,說在事件物件建立完畢後,qt將這個事件物件傳遞給qobject的event()函式。event()函式並不直接處理事件,而是將這些事件物件按照它們不同的型別,分發給不同的事件處理器(event handler)。

event()函式主要用於事件的分發,所以,如果你希望在事件分發之前做一些操作,那麼,就需要注意這個event()函式了。為了達到這種目的,我們可以重寫event()函式。例如,如果你希望在視窗中的tab鍵按下時將焦點移動到下一元件,而不是讓具有焦點的元件處理,那麼你就可以繼承qwidget,並重寫它的event()函式,已達到這個目的:

event(qevent *

event)

return qwidget::

event(

event);

event()函式接受乙個qevent物件,也就是需要這個函式進行**的物件。為了進行**,必定需要有一系列的型別判斷,這就可以呼叫qevent的type()函式,其返回值是qevent::type型別的列舉。我們處理過自己需要的事件後,可以直接return回去,對於其他我們不關心的事件,需要呼叫父類的event()函式繼續**,否則這個元件就只能處理我們定義的事件了。

bool qwidget::

event(qevent *

event)

return

true;

qwidget的event()函式使用乙個巨大的switch來判斷qevent的type,並且分發給不同的事件處理函式。在事件處理函式之後,使用這個事件的isaccepted()方法,獲知這個事件是不是被接受,如果沒有被接受則event()函式立即返回false,否則返回true。

另外乙個必須重寫event()函式的情形是有自定義事件的時候。如果你的程式中有自定義事件,則必須重寫event()函式以便將自定義事件進行分發,否則你的自定義事件永遠也不會被呼叫。關於自定義事件,我們會在以後的章節中介紹。

本文出自 「豆子空間」 部落格,請務必保留此出處

Qt學習之路 21 event

今天要說的是event 函式。記得之前曾經提到過這個函式,說在事件物件建立完畢後,qt將這個事件物件傳遞給qobject的event 函式。event 函式並不直接處理事件,而是將這些事件物件按照它們不同的型別,分發給不同的事件處理器 event handler event 函式主要用於事件的分發,...

Qt學習之路21 檔案操作

io操作的本質就是讀寫一段連續的儲存空間。qfile file qstring c users song8023 desktop test.txt 定義乙個檔案qfile類物件時需要指定路徑和名字,if file.open qiodevice writeonly qiodevice text 以只寫...

python學習之路(21)

偏函式 python的functools模組提供了很多有用的功能,其中乙個就是偏函式 partial function 要注意,這裡的偏函式和數學意義上的偏函式不一樣。在介紹函式引數的時候,我們講到,通過設定引數的預設值,可以降低函式呼叫的難度。而偏函式也可以做到這一點。舉例如下 int 函式可以把...