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...