簡體   English   中英

有沒有辦法在qt中卸載eventfilter?

[英]Is there a way to uninstall eventfilter in qt?

我只需要一段時間才能使用事件過濾器,有沒有辦法在以后卸載它?

在此處閱讀Qt中事件系統的工作原理 這對於基本理解至關重要,尤其是本段:

QObject :: installEventFilter()函數通過設置事件過濾器來啟用此功能,從而使指定的過濾器對象在其QObject :: eventFilter()函數中接收目標對象的事件。 事件過濾器可以在目標對象執行之前處理事件,從而允許它根據需要檢查和丟棄事件。 可以使用QObject :: removeEventFilter()函數刪除現有的事件過濾器。

閱讀installEventFilter ,您可以看到installEventFilter有一個反向部分,毫不奇怪,它被稱為removeEventFilter 以下是Qt 5文檔

void QObject :: removeEventFilter(QObject * obj)

從此對象中刪除事件過濾器對象obj。 如果尚未安裝此類事件過濾器,則會忽略該請求。

銷毀此對象時,將自動刪除此對象的所有事件過濾器。

即使在事件過濾器激活期間(即從eventFilter()函數中),刪除事件過濾器總是安全的。

來自Qt Docu:

void QObject :: removeEventFilter(QObject * obj)

從此對象中刪除事件過濾器對象obj。 如果尚未安裝此類事件過濾器,則會忽略該請求。

銷毀此對象時,將自動刪除此對象的所有事件過濾器。

即使在事件過濾器激活期間(即從eventFilter()函數中),刪除事件過濾器總是安全的。

就在這里。 它是一個名為QObject :: removeEventFilter的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM