文章目錄
qt增加按鍵事件處理響應
qt增加按鍵事件處理響應
在使用qt時,當需要處理按鍵觸發的鍵盤事件的時候,需要用到事件觸發響應。
查閱文檔,QT已經實現了這一系列的鍵盤事件
void QWidget::keyPressEvent(QKeyEvent *event) //鍵盤按下事件
void QWidget::keyReleaseEvent(QKeyEvent *event) //鍵盤松開事件
1
2
這樣兩個都基本上能夠滿足一般的需求了,但是前提是已經獲得焦點的控件已經獲取焦點。具體怎么使用呢?
在控件的頭文件.h中進行聲明:
//需要包含按鍵事件的頭文件
#include <QKeyEvent>
protected:
virtual void keyPressEvent(QKeyEvent *ev);
virtual void keyReleaseEvent(QKeyEvent *ev);
1
2
3
4
5
6
在.cpp中進行實現相應的功能:
//鍵盤按下觸發事件
void MainForm::keyPressEvent(QKeyEvent *ev)
{
if(ev->key() == Qt::Key_F5)
{
ui->stackedWidget->reloadPage();
return;
}
QWidget::keyPressEvent(ev);
}
//鍵盤松開觸發事件
void MainForm::keyReleaseEvent(QKeyEvent *ev)
{
if(ev->key() == Qt::Key_F5)
{
ui->stackedWidget->reloadPage();
return;
}
QWidget::keyReleaseEvent(ev);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
在一些程序中,我們發現這樣並不好使,怎么回事呢?
這時候可以試試在構造函數中添加一下函數,使其具有捕獲鍵盤事件的能力:
this->grabKeyboard();
————————————————
版權聲明:本文為CSDN博主「跑不了的你」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_37596943/article/details/103728858