Qt eventFilter实现信号与槽
生活随笔
收集整理的這篇文章主要介紹了
Qt eventFilter实现信号与槽
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 對于Qt來說,信號與槽機制是其通信的一大亮點,但是Qt中也提供了其他的方法實現數據間的通信,如invokeMethod反射機制實現通信(https://blog.csdn.net/xx18030637774/article/details/105017306),另外Qt還提供了使用eventFilter來實現數據通信,具體實現如下:
1)首先使用eventFilter來進行數據通信的對象,需要自己安裝事件過濾器,具體如下(以QPushButton為例):
??????????? QPushButton *btn = new QPushButton(this);
??????????? btn->installEventFilter(this);
2) 然后繼承eventFilter函數,對QPushButton對應的事件進行捕捉和處理,具體代碼如下:
bool eventFilter(Qobject *obj, QEvent *event) {if (event->type() == QEvent::MouseButtonPress) {QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);if (mouseEvent->button() == Qt::LeftButton) {if (obj == btn) {//do something about press btn button;}}}//其他情況:如果對象的event是自定義的事件,則需要把相關的事件注冊到Qt的元對象系統中去 }?
?
總結
以上是生活随笔為你收集整理的Qt eventFilter实现信号与槽的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt使用invokeMethod反射机制
- 下一篇: 成都大熊猫繁育研究基地是几A级景区