【Qt】键盘长按

KeyPressEvent 事件

键盘事件是重写 keypressevent 函数,详见代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//keyLongPress.cpp

#include "keyLongPress.h"
#include "ui_keyLongPress.h"

KeyLongPress::KeyLongPress(QWidget *parent) :
QWidget(parent),
ui(new Ui::KeyLongPress)
{
ui->setupUi(this);
}

KeyLongPress::~KeyLongPress()
{
delete ui;
}

//QMouseEvent没有isAutoRepeat()方法...无语了,
//这样有些操作就不方便实现了,
//比如长按鼠标多少秒呼出某个(登录)窗口啥的。

//! [按键按下事件-Begin]
void KeyLongPress::keyPressEvent(QKeyEvent *event)
{
if(event->isAutoRepeat()){
qDebug() << "按键长按中...";
}
else{
qDebug() << "按键按下";
}
}
//! [按键按下事件-End]

//! [按键释放事件-Begin]
void KeyLongPress::keyReleaseEvent(QKeyEvent *event)
{
if(event->isAutoRepeat()){
qDebug() << "按键不断释放...";
}
else{
qDebug() << "按键释放";
}
}
//! [按键释放事件-End]
 

运行之后,测试效果:

你Click看下输出:是只有1次Press和1次Release的,

长按看下输出:是Press和Release一直在不停的输出的。

示意图:


【Qt】键盘长按
https://hodlyounger.github.io/B_Code/Qt/鼠标键盘/【Qt】键盘长按/
作者
mingming
发布于
2023年10月27日
许可协议