当前位置: 首页 > news >正文

Qt:鼠标事件

虽然Qt是跨平台的c++开发框架,但是Qt的很多能力是系统提供的,只是其封装了系统的API,例如在Linux环境下的Qt就封装了Linux的一堆API
系统API
事件:图形化界面中,用户操作和程序之间交互的机制(封装了系统的事件)
文件操作
多线程编程
网络编程
多媒体:音视频的播放

事件

  • 信号和槽
    用户的各种操作产生信号,给信号指定槽函数,信号触发则能自动执行对应函数
  • 事件和信号槽十分相似
    用户的各种操作会产生事件,给事件关联处理函数或者处理逻辑,事件触发则自动执行对应代码
  • 事件本身是OS提供的机制,Qt进行了封装
    事件再次封装后得到了信号槽机制
  • 多数情况下用户和程序的交互可以通过信号槽完成
    如果用户的行为Qt并没有提供对应的信号,此时需要重写事件处理函数,来手动处理事件的响应逻辑

QEvent:该类表示事件的概念
QMouseEvent:鼠标引起
QKeyEvent:键盘引起
QTimerEvent:定时器引起
QDropEvent:拖拽引起
QInputEvent:输入引起
QPaintEvent:窗口绘制引起

重点学习一段代码和某个事件关联起来
事件的处理方式:让当前类重写事件处理函数
创建子类继承Qt已有的类,子类重写父类事件处理函数,事件触发就会通过多态,执行自己写的子类

处理鼠标进入和鼠标离开

enterEvent
leaveEvent

1.创建QLabel子类,重写enterEvent函数
2.在UI界面右键,选择提升为,将QLabel提升为自己写的类Label(将Qt中拖上去的控件类型转换成自定义的控件类型)

Label.h
#include <QWidget>
#include <QLabel>
class Label : public QLabel
{Q_OBJECT
public:Label(QWidget* parent);void enterEvent(QEvent* event);//重写父类函数,函数名和参数类型要匹配void leaveEvent(QEvent* event);
};#endif // LABLE_H
Label.cpp
#include "label.h"
#include <QDebug>
Label::Label(QWidget* parent):QLabel(parent)
{}
void Label::enterEvent(QEvent* event)
{qDebug()<<"enterEvent";
}
void Label::leaveEvent(QEvent* event)
{qDebug()<<"leaveEvent";
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 最近公共祖先(LCA),树上差分,树的直径总结
  • Python优化算法12——蝴蝶优化算法(BOA)
  • vscode解决运行程序无法从控制台输入问题
  • vue的vue.config.js中反向代理pathRewite的理解
  • html2canvas ios慎用和createImageBitmap ios慎用
  • 12、stm32通过dht11读取温湿度
  • TCP粘包和抓包
  • Node.js中的pipe方法:深入解析与应用指南
  • dubbo:dubbo服务负载均衡、集群容错、服务降级、服务直连配置详解(五)
  • 前端 介绍常见两种pc适配方案
  • 虚拟内存和linux(操作系统part1)
  • 【自动化】考试答题自动化完成答案,如何实现100%正确呢
  • Linux内核多线程
  • QGraphicsView类介绍
  • 推荐一款好用的mac解压缩软件
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2017-08-04 前端日报
  • co.js - 让异步代码同步化
  • crontab执行失败的多种原因
  • C语言笔记(第一章:C语言编程)
  • input实现文字超出省略号功能
  • java第三方包学习之lombok
  • php面试题 汇集2
  • Python实现BT种子转化为磁力链接【实战】
  • vue--为什么data属性必须是一个函数
  • Vue学习第二天
  • 高度不固定时垂直居中
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 每天10道Java面试题,跟我走,offer有!
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 整理一些计算机基础知识!
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Python) SOAP Web Service (HTTP POST)
  • (python)数据结构---字典
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (接口自动化)Python3操作MySQL数据库
  • (六)软件测试分工
  • .CSS-hover 的解释
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .sh 的运行
  • //TODO 注释的作用
  • @javax.ws.rs Webservice注解
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)
  • [BSidesCF 2019]Kookie1
  • [C++]类和对象【下】