Qt事件過濾器的使用
Qt事件過濾器的使用
事件過濾器事件:void QObject::installEventFilter( QObject *filterObj ),示例:
monitoredObj->installEventFilter( filterObj );
繼承自QObject類的物件都可以安裝事件過濾器,也就是說 mobitoredObj、filterObj 這兩個物件必須都繼承自QObject類。filterObj 物件會接收所有傳送給 monintoredObj 物件的事件,並在 eventFilter() 函式中處理,也就是說要在 filterObj 物件的類中定義實現 eventFilter() 函式。eventFilter() 函式原型為:
virtual bool eventFilter( QObject *obj, QEvent *e );
eventFilter() 函式中可以選擇結束事件(即過濾掉事件),也可以繼續向前傳遞事件給 monitoredObj 物件。
下面給出Qt幫助文件中的程式碼示例
class KeyPressEater : public QObject
{
Q_OBJECT
protected:
bool eventFilter( QObject *obj, QEvent *event );
}
bool KeyPreeEater::eventFilter( QObject *obj, QEvent *event )
{
if( event->type() == QEvent::KeyPress ) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug( "Ate key press %d", keyEvent->key() );
return true;//事件結束
} else {
return QObject::eventFilter( obj, event );//事件傳遞給 monitoredObj 物件
}
}
安裝過濾器步驟:
KeyPressEater *keyPressEater = new KeyPressEater( this );
QPushButton *pushButton = new QPushButton( this );
QListView *listView = new QListView( this );
pushButton->installEventFilter( keyPressEater );//安裝過濾器後 keyPressEater 物件可以接收 pushButton 物件的所有事件,並在 KeyPressEater::eventFilter( QObject *obj, QEvent *event ) 函式中處理。
listView->installEventFilter( keyPressEater );
相關文章
- Qt 事件傳遞流程-事件處理器|事件分發器|事件過濾器QT事件過濾器
- 4、過濾器的使用及自定義過濾器過濾器
- Filter過濾器的使用Filter過濾器
- Vue案例引發的「過濾器」的使用Vue過濾器
- 布隆過濾器-使用場景的思考過濾器
- 過濾器過濾器
- 換個角度使用VUE過濾器Vue過濾器
- Spring Cloud Gateway中的過濾器工廠:重試過濾器SpringCloudGateway過濾器
- 使用路由閘道器的全域性過濾功能路由
- Asp.net core 過濾器的簡單使用ASP.NET過濾器
- 誠翔濾器光刻膠過濾器濾芯:保障光刻過程的高效與安全過濾器
- 點雲濾波器與過濾器過濾器
- 如何在vue中使用過濾器filterVue過濾器Filter
- 13.gateway中的過濾器的介紹以及自定義過濾器Gateway過濾器
- CAN過濾器過濾器
- Filter過濾器Filter過濾器
- vue 過濾器Vue過濾器
- NetCore過濾器NetCore過濾器
- 代理過濾器過濾器
- Vue過濾器Vue過濾器
- DataV過濾器過濾器
- hbase過濾器過濾器
- Xor過濾器:比布隆Bloom過濾器更快,更小過濾器OOM
- SpringBoot圖文教程6—SpringBoot中過濾器的使用Spring Boot過濾器
- Wireshark的捕獲過濾器過濾器
- Guava的布隆過濾器Guava過濾器
- 簡單的限流過濾器過濾器
- Spring Cloud Gateway ---GatewayFilter過濾器、過濾器工廠(入門)SpringCloudGatewayFilter過濾器
- PHP 過濾器(Filter)PHP過濾器Filter
- vue---過濾器Vue過濾器
- Vue中過濾器Vue過濾器
- vue filters過濾器VueFilter過濾器
- 布隆過濾器過濾器
- SpringSecurity過濾器原理SpringGse過濾器
- 監聽器和過濾器過濾器
- springBoot的過濾器,監聽器,攔截器Spring Boot過濾器
- Redis 中的布隆過濾器Redis過濾器
- 037:函式物件的過濾器函式物件過濾器