news 2026/6/10 21:34:55

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/6/10 20:37:32

安全审计必备:检查TensorFlow镜像是否存在CVE漏洞

安全审计必备&#xff1a;检查TensorFlow镜像是否存在CVE漏洞 在金融风控模型上线前的最后一次部署中&#xff0c;运维团队突然收到安全告警——某台推理服务容器因 OpenSSL 漏洞被外部扫描器标记为高危目标。调查发现&#xff0c;问题源头竟是几个月前构建的一个 tensorflow/…

作者头像 李华
网站建设 2026/6/10 14:14:33

揭秘autodl与Open-AutoGLM集成难点:如何在30分钟内完成全流程部署

第一章&#xff1a;autodl环境配置Open-AutoGLM概述Open-AutoGLM 是一个面向自动化深度学习任务的开源框架&#xff0c;专为简化大语言模型在 AutoDL&#xff08;自动深度学习&#xff09;场景下的部署与调优而设计。该框架融合了自动特征工程、神经网络架构搜索&#xff08;NA…

作者头像 李华
网站建设 2026/6/10 14:14:33

手把手教你部署Open-AutoGLM,阿里云环境下性能提升8倍的秘密

第一章&#xff1a;Open-AutoGLM 阿里云部署概述Open-AutoGLM 是阿里云推出的一款面向自动化生成语言模型的开源工具&#xff0c;支持在云端快速部署与扩展。其架构设计充分适配阿里云弹性计算服务&#xff08;ECS&#xff09;、容器服务&#xff08;ACK&#xff09;以及对象存…

作者头像 李华
网站建设 2026/6/10 16:03:56

如何将TensorFlow镜像部署到Kubernetes集群

如何将TensorFlow镜像部署到Kubernetes集群 在现代AI系统中&#xff0c;模型上线早已不再是“训练完导出权重、扔给后端跑个脚本”那么简单。面对线上服务的高并发、低延迟和724小时可用性要求&#xff0c;如何让一个深度学习模型真正“站得住、扛得动、升得平滑”&#xff0c;…

作者头像 李华
网站建设 2026/6/10 14:14:05

Open-AutoGLM上手机难吗?资深工程师亲授6个核心优化技巧

第一章&#xff1a;Open-AutoGLM怎么弄到手机上将 Open-AutoGLM 部署到手机上&#xff0c;可以实现本地化的大模型推理与自动化任务处理。虽然该项目主要面向桌面环境开发&#xff0c;但通过容器化和轻量化部署手段&#xff0c;也能在安卓设备上运行。准备工作 一台已获取 root…

作者头像 李华