Qt事件的接收和忽略

2021-09-30 19:49:20 字數 634 閱讀 4230

qt的事件是依次分發的,一般由系統自動處理。如果我們需要手動處理事件,需要重寫相關的事件函式。在重寫函式中,處理完我們所需的操作之後,有兩種選擇,一種是讓事件繼續傳遞,即忽略該事件,另一種是 不讓該事件繼續傳遞即接收該事件。下面是簡單的示例:

void mypushbutton::mousepressevent(qmouseevent *e)

else

}

這樣就既不影響別的事件的傳遞,又可以處理自己需要的事件,看起來很完美。但是有兩個函式一直讓我疑惑不解,qevent的accept()和ignore();這兩個函式乙個是表示接收事件,另乙個是忽略事件,但是具體怎麼用也不是很懂。最後經過查閱資料才明白。見示例:

void mypushbutton::mousepressevent(qmouseevent *e)

else

}

而accept()和ignore()函式的正確用法是用在重寫closeevent函式中。見示例:

void widget::closeevent(qcloseevent *event)

else if(ret == qmessagebox::no)

}

Qt 事件的接收和忽略

我們可以把qt的事件傳遞看成鏈狀 如果子類沒有處理這個事件,就會繼續向其父類傳遞 1.新建乙個mybutton類,將其基類改為qpushbutton.2.在ui中新建乙個push button控制項,並將其提公升為mybutton.3.在mybutton.h中增加滑鼠按下事件.ifndef mybu...

19黑馬QT筆記之事件的接收和忽略

1 概念 1 事件的接收 事件被接收後,不會往後傳遞,導致也不會觸發該事件的相應訊號。例如滑鼠按下事件,當使用者按下滑鼠觸發事件,產生乙個事件物件。你重寫了該按鈕的mousepressevent事件處理函式,接收了該物件並人為的不再往下傳遞,事件物件沒了就不會再觸發按鈕的訊號,也就不會觸發該訊號的槽...

Qt c 事件,以及事件的接收和忽略

實驗環境 linux mint 下qt5.11 其實我們談及qt程式設計,第乙個想起的無外乎訊號和槽,訊號就是通過某一控制項的動作 例如按鈕的按下和抬起 讓接收訊號的微件有所響應 呼叫標準或自定義函式 槽 而事件,為響應微件事件作出函式處理增加了更多的可能。自定義微件大多繼承自qwidget,而wi...