qt5 类中添加keyPressEvent
时间: 2023-12-14 15:38:14 浏览: 353
在 Qt5 中,你可以通过继承 QWidget 来创建自定义的窗口部件,并且通过重写 keyPressEvent() 函数来响应键盘事件。
具体的实现步骤如下:
1. 创建自定义窗口部件类并继承 QWidget。
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
protected:
void keyPressEvent(QKeyEvent *event);
};
```
2. 在类的实现文件中重写 keyPressEvent() 函数,并在函数中处理键盘事件。
```cpp
void MyWidget::keyPressEvent(QKeyEvent *event)
{
// 判断按下的键是哪个键
switch (event->key())
{
case Qt::Key_Escape:
// 如果按下的是 Esc 键,则关闭窗口
close();
break;
case Qt::Key_Return:
// 如果按下的是回车键,则执行某些操作
// TODO: Add your code here
break;
default:
// 其他情况下,调用基类的函数处理该事件
QWidget::keyPressEvent(event);
break;
}
}
```
在上面的代码中,我们使用了 Qt 提供的 Qt::Key_XXX 常量来判断按下的是哪个键。如果是 Esc 键,则调用 close() 函数关闭窗口;如果是回车键,则可以添加自己的逻辑代码;如果是其他键,则调用 QWidget 基类的 keyPressEvent() 函数来处理该事件。
3. 在主函数中创建 MyWidget 对象并显示窗口。
```cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
```
这样,当用户在窗口中按下键盘时,就会触发 MyWidget 类中的 keyPressEvent() 函数,从而实现对键盘事件的响应。
阅读全文