Qt—事件处理

news2024/11/23 12:42:37

Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。Qt中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent()、mousePressEvent()等事件处理函数来处理特定部件的特定事件。

每个程序的main函数最后都会调用QApplication类的exec()函数,它会使Qt应用程序进入到事件循环,使应用程序在运行的时候接收各种事件。一旦有事件发生,Qt便会构造一个相应的QEvent子类的对象来表示它,然后将它传递给QObject对象或子对象。

鼠标事件

将鼠标移动、按下与释放时的位置希纳是在状态栏中。

在构造函数中。向状态栏添加两个永久QLabel标签,m_statusLabel用来信息提示,m_sposLabel用来显示鼠标移动时的坐标

重写鼠标按下方法:

重写鼠标移动方法:

重写鼠标松开方法:

键盘事件

当按方向键时,图片每次移动20像素;当按下Ctrl+方向键时,图片每次移动1像素

新建桌面应用程序testKeyEvent,类名KeyEvent,基类QWidget,通过重写键盘事件到达操作的键盘的时候窗口中的图片上下左右移动,类似QtCreator设计模式下通过按键摆放部件时的效果。

将网格线和图片绘制在一个QPixmap类上,每次有上下左右按键时重新绘制QPixmap。重写绘制方法,将图片绘制到应用程序上。

将网格线与图片绘制到QPixmap类上,m_pix是一个和应用程序一样大小的QPixmap类:

重写绘制方法,将QPixmap类绘制到应用程序上:

重写按键方法,判断按键类型,如果是Ctrl+方向键则每次移动距离一个像素,如果仅是方向键则每次移动20像素:

m_startx和m_starty为int类型,用来记录QPixmap类上图片的位置;m_height和m_width也为int类型,用来记录应用程序的高、宽。

程序直接结束后调用update( )方法重绘应用程序。

构造函数:

事件过滤

Qt的事件过滤由以上两个方法实现,首先对需要监听的对象安装一个事件过滤器,调用installEventFilter( )方法,参数filterObj表示监听者,它监听发送到此对象的所有事件。过滤器可以停止此事件,也可以iang此事件发送给此QObject对象那个。世家过滤器filterObj用过它的eventFilter( )函数接收事件。

重写bool eventFilter(QObject *obj, QEvent *event)方法用来对过滤的事件进行处理

eventFilter()的返回值。

  • 如果返回true,表示事件过滤,不会发送到对象本身。

  • 如果返回false,表示事件未过滤,会通过event()方法将事件分发到对象。

  • 返回给基类进行处理,例:return QObject::eventFilter(obj, event)。

示例

鼠标左键、中键和右键点击图片时图片放大,松开时图片回到原始大小。同时,将对应的鼠标事件的信息显示在右边标签内,

构造函数中初始化部件,并将图片所在的标签部件安装事件过滤器

重写bool eventFilter(QObject *watched, QEvent *event)

QMouseEvent: :buttons( )与QMouseEvent: :button( )的区别

假设你的鼠标左键已经按下。

如果移动鼠标,会发生的move事件,button返回Qt::NoButton,buttons返回LeftButton。

再按下了右键,会发生press事件,button返回RightButton,buttons返回LeftButton|RightButton

再移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton|RightButton

再松开左键,会发生Release事件,button返回LeftButton,buttons返回RightButton

也就是说,button返回“哪个按钮发生了此事件”,buttons返回“发生事件时哪些按钮还处于按下状态”

追风赶月莫停留,平芜尽处是春山!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度语音+自动驾驶感知+深度学习平台技术解析

HIEV快讯(文/戒僧)本文将解析三部分技术内容,出自百度2023 Create大会-技术开放日: •百度如何用“手机全双工语音交互”改善使用导航应用的体验 •如何用“上帝视角”BEV技术提升汽车的自动驾驶能力 •如何用百度自研的深度学习平…

k8s常见错误

master节点初始化失败 出现这个原因是因为,我们之前有执行过初始化的命令,然后初始化的时候就会产生一些文件,和占用端口,然后当你再次初始化的时候,就会提示你有些文件已经存在和端口正在被使用,所以我们…

年末高压叠加“阳”后虚弱,双重压力下的测试者们该何去何从

在2022年的最后一个月,国家放开管控,发布“新十条”,不查核酸,不看健康码,以前闻之色变的“小阳人”,十几天后,遍地皆是。 相信大家对这段时间的经历难以忘怀,在刚放开的时候&#x…

【论文阅读笔记】EndoL2H: Deep Super-Resolution for Capsule Endoscopy

论文地址:https://arxiv.org/abs/2002.05459 代码地址:https://github.com/CapsuleEndoscope/EndoL2H 论文小结 顾名思义,本文是胶囊内窥镜领域的超分算法。本文的网络结构是条件对抗网络 空间attention块的方式,实现8倍、10倍和…

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。 最近刷短视频刷到了好多抖音追剧看电影每天收几百,还有截图,还有怎么实操的视频。 关键不是刷到一个两个,是几十个还有越来越多的趋势。 都说新入门实操,终于忍不住&#x…

LeetCode刷题Day05——链表(链表元素删除、相交、环形链表)

文章目录一、删除链表中的倒数第n个节点二、链表相交三、环形链表一、删除链表中的倒数第n个节点 题目链接&#xff1a;19.删除链表中的倒数第n个节点 /*** <pre>* 最简单的方法显然是先遍历一遍链表&#xff0c;知道长度后重新遍历一次就可以找到指定节点了&#xff0…

WebDAV之葫芦儿·派盘+DAVx⁵

DAVx⁵ 支持WebDAV方式连接葫芦儿派盘。 支持移动设备远程同步,是不是比NAS更便捷?并且这款软件最为关键的还是支持各种协议,让你能够在跨平台上面同步安卓和苹果上面的内容,你可以在服务器上面进行一些简单的内容管理,快来试试DAVx⁵与派盘的最佳组合吧。 DAVx⁵是一款…

LeetCode:18. 四数之和

18. 四数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &…

Codeforces Round #772 (Div. 2)

A. Min Or Sum 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 3 2 5 1 2 4 8 16 2 6 6 3 3 5 6样例输出&#xff1a; 3 31 6 7题意&#xff1a;给你一个长度为n的数组&#xff0c;我们可以对这个数组进行操作&#xff0c;每次操作可以选择两个不…

ThinkPHP5之文件包含审计分析(五)

说明 该文章来源于同事lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明0x00 环境准备0x01 测试代码0x02 代码分析0x03 总结参考链接&#xff1a;Mochazz/ThinkPHP-Vuln/ 影响版本&#xff1a;5.0.0<ThinkPHP5<5.0.18 、…

Java - JIT即时编译

java前端编译器和后端编译器的作用Java前端编译器&#xff1a;javac 编译&#xff0c;在程序运行前&#xff0c;将 源文件 转化为 字节码 即 .class 文件Java 程序最初只能通过解释器解释执行&#xff0c;即 JVM 对字节码逐条解释执行&#xff0c;因此执行速度比较慢。字节码与…

【SAP Abap】SAP Flight 航班系统数据模型简介(SCARR、SPFLI、SFLIGHT、SBOOK等)

SAP Flight 航班系统数据模型简介&#xff08;SCARR、SPFLI、SFLIGHT、SBOOK等&#xff09;1、本文目的2、数据模型3、查看模型数据4、生成演示数据5、模型应用1、本文目的 SAP ABAP 系统都会自带 Flight 航班系统数据模型&#xff0c;其大量应用于 SAP ABAP 帮助文档、系统 D…

移动安全总结 2019

声明 本文是学习移动安全总结 2019. 下载地址 http://github5.com/view/1223而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 序言 随着2019年的逝去&#xff0c;二十一世纪第二个十年也已随之结束。回顾过去的十年&#xff0c;我们的生活随着科技的进…

养老院人员定位方案125K芯片AS3933/SI3933/GC3933/PAN3501

随着社会老龄化&#xff0c;高龄化&#xff0c;空巢化和病残化的迅速发展&#xff0c;将使得越来越多的老人住进养老院。虽养老院数量越来越多&#xff0c;但养老院人也越来越多&#xff0c;给现有的养老管理上带来压力&#xff0c;由于服务人员有限&#xff0c;无法及时顾及到…

【LeetCode每日一题】——89.格雷编码

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 中等 三【题目编号】 89.格雷编码 四【题目描述】 n 位格雷码序列 是一…

举个栗子!Tableau 技巧(249):为文本表中的不同度量设置不同颜色

使用文本表呈现数据时&#xff0c;通常会用颜色的深浅来代表度量的数值大小。单一度量很容易实现&#xff0c;但多个度量的情况&#xff0c;很多数据粉反馈不知道如何实现。 如下示例&#xff0c;在为不同度量设置了不同颜色后&#xff0c;的确既美观又直观。 具体该如何实现呢…

进制转换 2进制转10进制 10进制转2进制

觉得有用的&#xff0c;HXD们请点个赞●▽● 10进制转2进制&#xff08;以十进制100转换为二进制为例子&#xff1a;&#xff09; 方法一&#xff08;除2取余数&#xff0c;倒叙摆列&#xff0c;高位补零 &#xff09; 100/250余0&#xff1b; 50/225余0&#xff1b; 25/21…

Allegro174版本新功能介绍之改变菜单字体大小

Allegro174版本新功能介绍之改变菜单字体大小 Allegro在升级到174的时候,默认的字体是非常小的,如下图 看起来十分费劲 启动界面 菜单界面 但是174是支持把把这些字体调大的,具体操作如下 选择Setup

git远程仓库使用流程

git远程仓库使用流程远程仓库使用流程远程仓库介绍远程仓库使用流程如何将本地文件夹关联远程仓库多人开发配置流程远程仓库SSH配置远程仓库使用流程总结git分支使用流程分支介绍1.2-分支使用流程远程仓库使用流程 Git命名作用详细描述git clone克隆远程仓库代码把服务器的项目…

Laravel 开发 API 时的前置准备

前言 使用 Laravel 有一段时间了&#xff0c;今天来总结我平时进行开发前的一些准备工作&#xff0c;如果有不合理的地方或者有更好的建议欢迎各位大佬指出纠正&#xff01; 环境 PHP8 MySQL5.7 Nginx1.20 IDE&#xff1a;PhpStorm搭建 安装 推荐使用 composer 安装 或者…