Qt攔截特定按鍵

2021-10-03 23:50:42 字數 871 閱讀 6664

背景:qt應用執行時,鍵盤esc按下導致程式異常退出,需要在程式整個執行期間攔截esc這個按鍵響應。

qt整個執行機制是事件迴圈,在執行期間如果需要攔截特定的任務,qt提供乙個便捷的處理機制,就是事件過濾器。因為過濾器的定義在qobject類中,所以只要繼承了這個類,就可以使用installeventfilter()這個方法來使能過濾器。當然預設的過濾器不會過濾任何行為,如果想過濾特定行為,則需要對過濾器進行重寫。

qobject類中定義的eventfilter():

virtual bool qobject::eventfilter ( qobject * watched, qevent * event );
此方法返回bool,過濾就返回true,否則flase。

重寫事件過濾器:

#include class myeventfilter : public qobject 

}return false;

}};

完成對事件過濾器的重寫後,需要在需要攔截的頁面進行安裝,如果是在子頁面(子程序)中進行安裝,那麼它只在當前頁面生效,並不會影響到別的頁面,如果想在全域性使用,那麼就需要在第乙個基頁面中安裝。安裝是呼叫qobject類中的乙個方法。

qobject類中定義的安裝方法:

void qobject::installeventfilter ( qobject * filterobj )
全域性過濾這個鍵盤事件:

a.installeventfilter(new myeventfilter);

最終效果:

qt應用啟動期間,不會響應按壓esc鍵,程式不會退出,完成了最初目的,類似操作可以攔截更多事件。

Qt攔截特定按鍵

背景 qt應用執行時,鍵盤esc按下導致程式異常退出,需要在程式整個執行期間攔截esc這個按鍵響應。qt整個執行機制是事件迴圈,在執行期間如果需要攔截特定的任務,qt提供乙個便捷的處理機制,就是事件過濾器。因為過濾器的定義在qobject類中,所以只要繼承了這個類,就可以使用installevent...

QT控制項 按鍵組

qt的按鍵組主要有6種,分別是 qpushbutton qtoolbutton qdadiobutton qcheckbox qcommandlinkbutton qbuttonbox 下面,將對各個空間進行簡要的介紹以及使用方法 一,push button 此控制項通常用得是最多,每個軟體基本少不...

攔截電源關機按鍵 自定義功能

攔截電源關機按鍵 自定義功能 忽略gnome自帶的電源管理 sed i s handlepowerkey poweroff handlepowerkey ignore g etc systemd logind.conf systemctl status systemd logind yum inst...