news 2026/5/1 7:39:15

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/5/1 6:45:49

如何为团队申请批量TensorFlow镜像使用权

如何为团队申请批量 TensorFlow 镜像使用权 在企业级 AI 工程实践中&#xff0c;一个看似简单的问题——“为什么我拉不了这个 TensorFlow 镜像&#xff1f;”——往往背后隐藏着复杂的权限、安全和协作机制。随着机器学习项目从个人实验走向团队协作与生产部署&#xff0c;环境…

作者头像 李华
网站建设 2026/4/22 18:31:46

TensorFlow镜像崩溃了怎么办?日志排查全流程指引

TensorFlow镜像崩溃了怎么办&#xff1f;日志排查全流程指引 在生产环境中&#xff0c;一个训练好的模型刚刚上线&#xff0c;服务却反复重启——CrashLoopBackOff 的红字刺眼地挂在 Kubernetes 控制台里。运维团队紧急介入&#xff0c;第一反应是“重启试试”&#xff0c;但问…

作者头像 李华
网站建设 2026/4/26 17:16:29

手把手教你搭建AutoGLM系统,快速实现大模型自动化训练

第一章&#xff1a;Open-AutoGLM 完全指南 Open-AutoGLM 是一个开源的自动化通用语言模型&#xff08;GLM&#xff09;部署与推理框架&#xff0c;专为开发者和研究人员设计&#xff0c;支持快速构建、优化和部署基于 GLM 架构的语言模型。该框架提供模块化组件&#xff0c;涵盖…

作者头像 李华
网站建设 2026/5/1 6:29:26

代码写得再好,不懂知识管理也白搭!程序员必学的AI时代知识库构建术,告别“一本正经胡说八道“!

写在前面&#xff1a; 人工智能要在企业落地&#xff0c;让知识库和知识管理成为了各类机构降本增效、提升能力的必选项&#xff1a; 没有高质量的知识库&#xff0c;没有企业自己的私有知识&#xff0c;AI的能力无法在企业发挥出作用。 但关于如何建知识库做好知识管理工作&am…

作者头像 李华
网站建设 2026/5/1 6:28:47

使用TensorFlow镜像实现联邦学习保护用户隐私

使用TensorFlow镜像实现联邦学习保护用户隐私 在医疗、金融和智能终端等高度敏感领域&#xff0c;AI模型的训练正面临一个根本性难题&#xff1a;如何在不触碰用户原始数据的前提下&#xff0c;依然能构建出高性能的全局模型&#xff1f;集中式机器学习要求数据汇聚&#xff0c…

作者头像 李华
网站建设 2026/4/30 16:13:18

时序预测新突破:基于TensorFlow镜像构建LSTM模型

时序预测新突破&#xff1a;基于TensorFlow镜像构建LSTM模型 在电力调度中心的监控大屏上&#xff0c;一组曲线正被实时绘制——未来24小时的区域用电负荷预测值与实际采集数据几乎重合。这种精准预测的背后&#xff0c;并非依赖复杂的物理建模或专家经验&#xff0c;而是由一…

作者头像 李华