QT 之键盘事件( keyPressEvent)

2023-11-04

一、介绍

keyPressEvent是QWidget里面的函数,所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应。

要让当前的widget能够响应按键事件,最先需要做的事情是,调用:

setFocusPolicy(Qt::StrongFocus);

接下来就是keyPressEvent方法的声明与实现了~

// 声明
void keyPressEvent(QKeyEvent *event);

二、实例

void KeyEvent::keyPressEvent(QKeyEvent *event)
{
    //如果按下了ctrl键
    if (event->modifiers() == Qt::ControlModifier)
    {
        if (event->key() == Qt::Key_Left) // 上下左右键
        {
            startX = (startX - 1 < 0) ? startX : startX - 1;
        }
        if (event->key() == Qt::Key_Right)
        {
            startX = (startX + 1 + image.width() > width) ? startX : startX + 1;
        }
        if (event->key() == Qt::Key_Up)
        {
            startY = (startY - 1 < 0) ? startY : startY - 1;
        }
        if (event->key() == Qt::Key_Down)
        {
            startY = ((startY + 1 + image.height()) > height) ? startY : startY + 1;
        }
    }

     //0x30对应Ascii表中0,0x31表示1,剩下的一次类推

    if (0x30 <= event->key() && 0x39 >= event->key())
    {
        qDebug()<<event->key();

    }
}

参考:

QT 学习之键盘事件( keyPressEvent)_HarkerYX的博客-CSDN博客_keypressevent

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 之键盘事件( keyPressEvent) 的相关文章

  • QObject多重继承

    我正在尝试在 C Qt 类中使用 mix 来提供一大堆具有通用接口的小部件 该接口是以这样的方式定义的 如果它被定义为其他小部件类的基类 那么小部件本身将具有这些信号 class SignalInterface public QObject
  • 将 C++ 代码(本机客户端)移植到浏览器(Web 应用程序)

    我有一个使用 Qt creator SDK 编写的 C 模块 我想将此代码移植到任何网页上运行 而不会对最终用户损害源代码 用户应该能够在任何浏览器 Chrome Firefox Safari Explorer 上看到此模块的输出 而无需安
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • QFileDialog 作为 TableView 的编辑器:如何获取结果?

    我正在使用一个QFileDialog作为某些专栏的编辑QTableView 这基本上有效 对一些焦点问题取模 请参阅here https stackoverflow com questions 22854242 qfiledialog as
  • 无法将 [未定义] 分配给 QColor

    我正在使用 Qt 5 11 构建 运行代码 代码中有QML风格如下 Button style delegate Component id enabledButtonStyle ButtonStyle padding top 0 paddin
  • C++ QT libXL 错误:“启动期间程序退出,代码为 0xc0000135”

    我正在尝试编写一个使用 libXL 的 QT 应用程序 但是当我尝试编译时 我收到一个弹出框 显示 During Startup program exited with code 0xc0000135 我已经准确地找出了哪一行导致了问题 它
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import
  • 如何通过信号和槽传递参数?

    我的 GUI 包括LineEdit and a 按钮 当 的时候按钮单击后 插槽clicked 叫做 我想在之间建立信号槽关系clicked 作为信号和doSomething 作为插槽 问题是doSomething 无权访问 UI 并且do
  • PyQt:如何通过匿名代理使用网页

    这真让我抓狂 我想在 QWebPage 中显示一个 url 但我想通过匿名代理来实现 Code setting up the proxy proxy QNetworkProxy proxy setHostName 189 75 98 199
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 仅当从 Qt 连接时网页返回 HTTP 406 错误

    我有一个测试页面设置http mlecturedownload com test qt php http mlecturedownload com test qt php有以下代码
  • Qmake 不支持源目录下的构建目录

    我创建了一个可以在 OS X 上编译和运行的应用程序 我现在想开始让它在 Windows 上运行 首先 我将项目复制到 Windows 机器上并尝试编译 但收到此错误 警告 Qmake不支持源目录下的构建目录 有任何想法吗 将影子构建目录设
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • Qt:关闭模式对话框关闭程序

    在我的 Qt 程序中 我有 2 个窗口 主窗口和子窗口 在程序中 一次仅显示这些窗口之一 主窗口有一个插槽 用于创建模式对话框 现在 假设子窗口中单击按钮的信号被发送到该插槽 在这种情况下 主窗口隐藏 子窗口可见 对话框显示得很好 但是当对
  • 如何从 ffmpeg 中打开的文件获取流信息?

    我正在尝试使用 ffmpeg 读取视频文件 我有与其旧版本相对应的工作代码 并开始尝试升级到最新的构建版本 将所有这些已弃用的函数替换为其实际的类似函数 但是我遇到了问题 似乎没有检索到任何流 并且视频负载停止在轨道中 这是我正在使用的代码
  • Qt - 等待 Qprocess 完成

    我正在使用 CMDQProcess但我有一个问题 My code QProcess process process start cmd exe process write del f b txt n r process waitForFin
  • 派生类在 PySide (Qt/PyQt) 中的错误线程中接收信号

    我在让派生类在 PySide 中正确接收信号时遇到问题 我在主 GUI 或命令行应用程序 线程的两个单独线程上使用发送器和接收器 线程是 QThread 对象 发送器和接收器在创建后立即使用 QObject moveToThread 移动到
  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • QGraphicsScene没有删除QWidget的功能

    QGraphicsScene 有一个addWidget QWidget 有函数 但是没有对应的removeWidget QWidget 它只有removeItem QGraphicsItem 如何删除 QWidget 这是一个基本示例 看看
  • 如何在 QT 安装程序框架中区分每用户安装与系统范围安装?

    我正在使用一些名为 pgModeler 的应用程序 它的当前版本提供了一个基于 QT 安装程序框架的安装程序 Windows 上该安装程序的问题是它安装每个用户的开始菜单条目 https github com pgmodeler pgmod

随机推荐

  • Windows C++多线程:生产者消费者模型编程

    Windows C 多线程 生产者消费者模型编程 生产者消费者模型是一种常见的并发编程模型 用于解决生产者和消费者之间的数据交互问题 在这个模型中 生产者负责生成数据并将其放入共享的缓冲区 而消费者则从缓冲区中获取数据进行处理 在Windo
  • 软件项目管理

    一 填空题 1 项目是为创造独特的产品 服务或成果而进行的临时性的工作 2 PMBOK 2016 将项目管理分为五个过程组 即启动 计划 执行 控制和收尾 与十大知识领域 整合管理 范围管理 时间管理 成本管理 质量管理 人力资源管理 沟通
  • 如何申请国内博士

    博士申请过程还算平坦 在申请过程中得到了很多学长学姐的帮助 为了将这份帮助传递下去 我便将我的经历写下来 希望可以帮到一些同学 先介绍一下自己的情况 专业是计算机 研究方向是深度学习 机器视觉 硕士是一所排名较低的211 博士最终申请的学校
  • Lodash 总结

    数组 数组创建 随机创建数组 range range start 0 end step 1 let arr range 24 console log arr 0 1 2 3 23 创建相同元素数组 fill fill array value
  • 数据通信-路由基础

    1 IP路由选择原理 路由器的工作内容 路由器知道目标地址 发现到达目标地址的可能的路由 选择最佳路径 路由表 维护路由信息 转发IP数据 IP路由表 初始化情况下 路由器所知的网段 只有其直连接口所在网段 路由器自动将接口所在网段的路由写
  • 【注意】Kafka生产者异步发送消息仍有可能阻塞

    文章目录 问题描述 原因分析 解决办法 总结 问题描述 Kafka是常用的消息中间件 在Spring Boot项目中 使用KafkaTemplate作为生产者发送消息 有时 为了不影响主业务流程 会采用异步发送的方式 如下所示 Slf4j
  • GIS 图层

    GIS图层 从直观的角度看 就是按某种属性对数据分为若干文件 比如铁路L 公路 城市道路 乡村道路 分成若干层 从开发的角度 图层对应一张数据库表 这张表可能存在数据库中 也可能存在GIS相关文件中 图层包含要素 要素对应一条记录 做开发时
  • 丁奇mysql学习笔记-基础篇

    一 mysql的逻辑架构 问题解决 如果表 T 中没有字段 k 而你执行了这个语句 select from T where k 1 那肯定是会报 不存在这个列 的错误 Unknown column k in where clause 你觉得
  • 在Linux安装anaconda3和Pycharm

    第一步 在anaconda3官网下载Linux版本的anaconda3 官网 anaconda3 下载完成后打开终端terminal 进入下载文件的所在目录下 输入ls就可以看到所下载的文件了 第二步 准备安装Anaconda3 进入安装包
  • 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中 我们将讲述在C语言中 输入一个数组 如何用for循环实现将输入的n个数字按照从大到小输出 一 定义数组并初始化 首先 我们定义一个整形的数组并将其初始化 输入n 来决定数组中整数的个数 然后用for循环来输入这个数组中的各个数字
  • mysql用存储过程通过传入的参数id更新字段数据,结果更新了表中所有该字段的数据

    近日一个业务 需要用存储过程实现 其中有一句只是简单的通过id更新字段的语句 但是调用存储过程中发现 会更新表格所有数据 如下图 图一 表中现有数据 需要更新的字段是红框里的 图二 存储过程截图如下 红框里的更新语句 调用存储过程 如图三
  • 二十. Kubernetes 存储挂载

    目录 一 存储挂载 volumes卷的分类 1 EmptyDir 示例 2 hostPath 示例 3 HostDir 示例 4 NFS 网络数据卷示例 持久化卷 二 持久化存储的 PV PVC StorageClass PV 的创建与使用
  • fswebcam一次拍摄多张图片(存在问题)

    初衷 由于树莓派上使用python v4l2capture有问题 因此想了个中间办法 使用fswebcam一次连续拍摄多张图片 fswebcam no banner d dev video0 r 1920x1080 F 15 save 1
  • 一文汇总开源大语言模型,人人都可以拥有自己的ChatGPT

    前言 OpenAI发布的ChatGPT火爆全球以来 全球互联网大厂陆续跟进 纷纷宣布了自家的Chat产品 如Google的Bard 百度的文心一言 阿里的通义千问等等 这些Chat产品背后都是依赖的大语言模型 Large Language
  • keepalive+haproxy实现高可用

    目录 一 搭建环境 1 基本环境 二 修改配置文件 1 建立haproxy配置文件 2 修改haproxy配置文件 3 修改keeplive配置文件 三 启动服务验证 1 HAproxy虚拟机启动haproxy服务和keepalived服务
  • 守护进程的编程规则

    要理解守护进程的编程规则必须先搞明白进程组 会话 组长进程等关系 1 进程组 每个进程除了有一个进程ID之外 还属于一个进程组 进程组是一个或者多个进程的集合 每个进程组都有一个组长进程 组长进程的标识是 其进程ID和进程组ID相等 2 会
  • 基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现

    基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现 深度置信网络 Deep Belief Network DBN 是一类具有多层结构的前向神经网络 它由多个受限制玻尔兹曼机 Restricted Boltzmann Mach
  • UART串口Shell软硬件模型分析总结

    文章目录 层次一 最底层逻辑配置交互 如何从Uart硬件读写单个字节数据 层次二 抽象串口软件模块交互 基于串口对接输入输出流 和 Printf适配 层次三 类似Shell封装抽象交互 基于串口交互命令行界面 命令解析 补全 修改 记录 c
  • df -h 详解和centos 磁盘清理 /dev/vda1系统盘满了

    df h 检查一台服务器磁盘使用空间 发现磁盘已经使用了100 思路是 1 cd usr 当然这里不一定是 usr目录 最好是cd到 根目录再执行下一步 2 du sh 看哪个目录占用空间大 3 重复前两步 根据实际情况删除或者移走 4 日
  • QT 之键盘事件( keyPressEvent)

    一 介绍 keyPressEvent是QWidget里面的函数 所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应 要让当前的widget能够响应按键事件 最先需要做的事情是 调用 setFocusPolicy Q