[英]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.