Qt5 與 Qt4 的點點差異 事件

2021-10-01 01:57:35 字數 1473 閱讀 5588

qt5相對於qt4 增加對事件accept()和ignore()函式。

qt 中有很多種事件:滑鼠事件、鍵盤事件、大小改變的事件、位置移動的事件等等。對於事件的處理,我們qt 中使用相對應的機制。

event()函式

1. event()函式是乙個 protected 的函式,這意味著我們要想重寫event(),必須繼承乙個已有的類。

2. 各個元件對事件處理是併發修改,還是挨個修改呢?

bool test::event(qevent *e)

}return qwidget::event(e);

}

eventfilter()函式

virtual bool qobject::eventfilter ( qobject * watched, qevent * event );
bool test::eventfilter(qobject *object, qevent *event)

else 

}return false;

}

class label : public qwidget

bool eventfilter(qobject *watched, qevent *event)

}return false;

}protected:

void mousepressevent(qmouseevent *)

bool event(qevent *e)

return qwidget::event(e);

}};class eventfilter : public qobject

bool eventfilter(qobject *watched, qevent *event)

}return false;

}private:

qobject *m_watched;

};int main(int argc, char *ar**)

輸出結果是:

eventfilter 

event 

mousepressevent

因此可以知道,全域性事件過濾器被第乙個呼叫,之後是該物件上面的事件過濾器,其次是event()函式,最後是特定的事件處理函式。

registereventtype()函式   ------- 用於自定義事件的註冊

static int qevent::registereventtype ( int hint = -1 );
傳送方式:

例子:

qmouseevent event(qevent::mousebuttonpress, pos, 0, 0, 0);
注意:在事件被傳送的時候,event物件並不會被銷毀。通常我們會在棧上建立event物件

Qt4與Qt5的訊號差異

新舊語法對比 舉例介紹。某個類在值變化時傳送valuechanged qstring,qstring 訊號,需要在槽showvalue qstring 中對改變的值做相應的處理。在qt4中一般這樣來關聯訊號和槽 connect sender,signal valuechanged qstring,q...

Qt中 Qt5與Qt4語法的微小區別

ifndef mainwindow h define mainwindow h include class mainwindow public qmainwindow endif mainwindow h include include include include include include...

Qt4公升級Qt5問題總匯

qt 5 編譯問題 新增qtwidgets模組 o 標頭檔案包含 代替原有的等。o pro 檔案中qt widgets 新增qtwetkitwidgets模組 o 標頭檔案包含 o pro 檔案中qt webkitwidgets wflags is not a member of qt o wfla...