前言:
qt檢測按鍵需要了解的地方有兩塊地方:1、鍵盤值;2、鍵盤事件、組合鍵、組合鍵響應方法
demo演示:接下來會將詳細步驟。
一、鍵盤值
二、如何捕獲鍵盤按下、彈起、組合鍵、大小寫事件、組合鍵響應方法
1.鍵盤按下、彈起事件
mainwindow.h
//引入頭
#include //重寫
/* * keypressevent 按鈕按下事件
* keyreleaseevent 按鈕彈起事件
* *k * event 的意思是大家後面的變數可以自由發揮
*/void keypressevent( qkeyevent *k );
void keyreleaseevent( qkeyevent * event);
mainwindow.cpp
#include //加入utf-8防止漢字亂碼
#pragma execution_character_set("utf-8")
//建構函式初始化部分加入
this->grabkeyboard();
//鍵盤按下事件
void mainwindow::keypressevent( qkeyevent *k )
else if(k->key() == qt::key_b)
else if(k->key() == qt::key_c)
}//鍵盤彈起事件
void mainwindow::keyreleaseevent( qkeyevent * event)
//保持編輯器在游標最後一行
qtextcursor cursor=ui->textedit->textcursor();
cursor.moveposition(qtextcursor::end);
ui->textedit->settextcursor(cursor);
}
2.組合鍵、大小寫事件
看下面**有處問題需要注意,在jpg演示的時候單獨按下capslock鍵「按下」沒有響應,彈起出發了事件。這是因為單獨的按鍵監聽需要放在組合鍵之前,組合鍵會觸發按鈕單獨響應。
大小寫問題,介面一開始處於漢語輸入法一般情況先按shift鍵切換英文然後再按capslock鍵切換大寫,可以建立全域性變數根據capslock按下次數來判斷是否大小寫。
else if(k->key() == qt::key_control) //ctrl鍵
else if(k->key() == qt::key_alt) //左側alt鍵
else if(k->key() == qt::key_altgr) //右側alt鍵
//檢測ctri+capslock組合鍵 和 capslock大小寫鍵
if ((k->modifiers() == qt::controlmodifier) && (k->key() == qt::key_capslock))
else if (k->key() == qt::key_capslock) //capslock 大小寫
//保持編輯器在游標最後一行
qtextcursor cursor=ui->textedit->textcursor();
cursor.moveposition(qtextcursor::end);
ui->textedit->settextcursor(cursor);
3.組合按鍵響應方法
//按鍵+滑鼠組合,例如ctrl+左擊(先ctrl後左擊觸發,先左擊後ctrl不可觸發):
//按鍵+滑鼠組合方法2,例如a+左擊(先a後左擊,先左擊後a均可觸發):
//按鍵+按鍵組合,例如ctrl+字母(先ctrl後a觸發,先a後ctrl不可觸發):
if ((event->modifiers() == qt::controlmodifier) && (event->key() == qt::key_a))
三、其它文章
這麼多記不住怎麼辦,趕緊點收藏呀~,頁面右下角五角星收藏。
傳送門:
全面的qt 樣式表:
Flex 監聽鍵盤事件
flex 監聽鍵盤事件 2010 05 19 10 15 一 說明 1 只有當監聽的物件獲取焦點後,才能出接收到keyboardevent.key down event。二例子為應用程式的stage或元件的keydown事件新增 讀取keyboardevents的keycode屬性。使用keydow...
textField的鍵盤監聽
監聽鍵盤的彈出事件 建立乙個nsnotificationcenter物件。nsnotificationcenter center nsnotificationcenter defaultcenter 監聽鍵盤的彈出通知 center addobserver self selector selecto...
js監聽鍵盤事件
一 監聽全域性鍵盤按下事件,例如監聽全域性回車事件 d ocum ent key down fun ctio n ev ent if e vent key code 13 a lert 你按 下了en ter 二 監聽 某個元件 鍵盤按下 事件 如 butt on按鈕 do cume nt keyd...