news 2026/4/3 6:31:58

KeyBoredEvent

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
KeyBoredEvent

键盘事件

按键事件

​ 按键事件在用户按下一个键时触发,在Qt中使用QKeyEvent类表示这种事件。当按下一个键时,Qt会自动创建一个QKeyEvent对象,并将其传递给相应的事件处理函数。QKeyEvent对象包含该事件的详细信息

按下的键值

键值是一个枚举值,用于表示被按下的键

  • 字母键:Qt::key_AQt::key_BQt::key_C
  • 数字键:Qt::key_0``Qt::key_1``Qt::key_2
  • 功能键:Qt::key_F1``Qt::key_F2``Qt::key_F3
  • 方向键:Qt::key_Left``Qt::key_Right``Qt::key_Up``Qt::key_Down
  • 特殊键:Qt::key_Enter``Qt::key_Escape``Qt::key_Space``Qt::key_Tab

键值可以用QKeyEvent::key()获得

按下的修饰键。是指那些用于修改其他键行为的键,主要是ShiftCtrlAlt
  • Qt::shiftModifier:Shift键
  • Qt::ControlModifier:Ctrl键
  • Qt::AltModifier:Alt键
  • Qt::MetaModifier:Windows键或者Command键
相应文本。指按下的键对应的字符
事件类型。QKeyEvent类同时表示按键事件和释放事件

释放事件

​ 释放事件在用户松开一个键时触发,在Qt中使用QKeyEvent类表示这种事件,事件类型不同。通过这种方式,把按键事件和释放键事件统一处理,从而化简事件处理逻辑。

​ 处理键盘事件通常通过重写按键事件和释放事件的处理函数来实现

code

widget.h

#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QPushButton>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=nullptr);~Widget();QPushButton*btn;protected://定义键盘按下事件voidkeyPressEvent(QKeyEvent*);private:Ui::Widget*ui;};#endif// WIDGET_H

widget.cpp

#include"widget.h"#include"ui_widget.h"#include<QString>#include<QKeyEvent>Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);// 定义窗口与标题this->setWindowTitle(QString::fromLocal8Bit("键盘事件处理"));// 定义窗口大小为400*200,左上角的坐标显示在屏幕的50,50位置this->setGeometry(50,50,400,200);// 实例化按钮,定义上面文字为“可移动”btn=newQPushButton(QString::fromLocal8Bit("可移动"),this);btn->setGeometry(40,40,60,30);// 强迫Widget接收待定的按键信息(例如方向键),否则Widget不接收方向键信息setFocusPolicy(Qt::StrongFocus);}Widget::~Widget(){deleteui;}voidWidget::keyPressEvent(QKeyEvent*event){intx=btn->x();inty=btn->y();// 按键重复时不做处理,也就是屏蔽if(event->isAutoRepeat())return;// 通过event->key()读取键值switch(event->key()){caseQt::Key_Up:btn->move(x,y-10);break;caseQt::Key_Down:btn->move(x,y+10);break;caseQt::Key_Right:btn->move(x+10,y);break;caseQt::Key_Left:btn->move(x-10,y);break;caseQt::Key_N:if(event->modifiers()==Qt::ControlModifier){// 按下Ctrl+N,当前窗口中最大化setWindowState(Qt::WindowMaximized);}break;}QWidget::keyPressEvent(event);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 17:04:34

如何通过API远程提交TensorFlow镜像训练任务

如何通过API远程提交TensorFlow镜像训练任务 在现代AI工程实践中&#xff0c;一个常见的挑战是&#xff1a;数据科学家在本地调通的模型&#xff0c;一旦部署到服务器或集群环境就“跑不起来”——原因五花八门&#xff1a;CUDA版本不匹配、Python依赖冲突、甚至只是少装了一个…

作者头像 李华
网站建设 2026/3/28 16:30:01

autodl环境配置Open-AutoGLM实战指南(从零到一键启动的完整路径)

第一章&#xff1a;autodl环境配置Open-AutoGLM概述Open-AutoGLM 是一个面向自动化深度学习任务的开源框架&#xff0c;专为简化大语言模型&#xff08;LLM&#xff09;在 AutoDL 场景下的部署与调优而设计。该框架融合了自动数据预处理、模型选择、超参数优化及分布式训练调度…

作者头像 李华
网站建设 2026/3/28 22:43:02

教育科研用途:免费获取高性能TensorFlow镜像访问权限

免费获取高性能 TensorFlow 镜像&#xff1a;加速科研与教学的 AI 基础设施 在高校实验室里&#xff0c;你是否曾遇到这样的场景&#xff1f;一名研究生花了整整三天才把 CUDA、cuDNN 和 TensorFlow 的版本配对成功&#xff1b;另一位同学在复现论文时发现结果“总差一点”&…

作者头像 李华