QT 之鍵盤事件(捕獲鍵盤按下 鬆開事件)

2021-08-18 22:02:19 字數 810 閱讀 9050

我們在做軟體時候,經常會碰到這樣的場景,比如按下f5進行重新整理功能,按下f1進行幫助之類的快捷鍵方式。那麼在qt中該怎樣做呢?

查閱文件,qt已經實現了這一系列的鍵盤事件

void qwidget::keypressevent(qkeyevent *event)   //鍵盤按下事件

void qwidget::keyreleaseevent(qkeyevent *event) //鍵盤鬆開事件

這樣兩個都基本上能夠滿足一般的需求了,但是前提是已經獲得焦點的控制項已經獲取焦點。具體怎麼使用呢?

在控制項的標頭檔案.h中進行宣告:

protected:

virtual void keypressevent(qkeyevent *ev);

virtual void keyreleaseevent(qkeyevent *ev);

在.cpp中進行實現相應的功能:

void mainform::keypressevent(qkeyevent *ev)

qwidget::keypressevent(ev);

}void mainform::keyreleaseevent(qkeyevent *ev)

qwidget::keyreleaseevent(ev);

}

在一些程式中,我們發現這樣並不好使,怎麼回事呢?

這時候可以試試在建構函式中新增這個函式,使其具有捕獲鍵盤事件的能力:

this->grabkeyboard();

Qt之鍵盤事件 捕獲組合鍵

今天在做快捷鍵需求時,發現了乙個問題,qt的鍵盤事件不能捕獲多個按鍵按下.即便是在使用modifiers 時,也只能獲得類似於shfit x,ctrl c,alt y等等之類的快捷鍵,對於shift x c諸如此類更多的組合就無能為力的.於是各種網上查詢資料即查閱文件得知,qt的鍵盤事件機制一次每次...

QT如何捕獲全域性的鍵盤事件?

qt 如何捕獲全域性的鍵盤事件 方法一 繼承類,並過載notify 函式qt 是用函式來分發事件的 想要在任何事件過濾器檢視任何事件之前先得到這些事件 過載這個函式是唯一的辦法 通常來說事件過濾器更好用一些 因為不需要去繼承類。而且可以給 物件安裝任意個數的事件過濾器 相比之下 notify 函式只...

QT鍵盤事件

有按下後鬆開事件 virtual void keypressevent qkeyevent event 鍵盤按下事件 virtual void keyreleaseevent qkeyevent event 鍵盤鬆開事件加個頭檔案 include在一些程式中,我們發現這樣並不好使,怎麼回事呢?這時候...