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

MouseEvent

鼠标事件

在Qt中,鼠标事件主要包括以下几种:

  • 鼠标按下事件,当用户按下鼠标按键时触发
  • 鼠标释放事件,当用户松开鼠标按键时触发
  • 鼠标单击事件,按下和释放鼠标按键时触发
  • 鼠标双击事件,用户在短时间内连续单击两次鼠标按键时触发
  • 鼠标移动事件,当鼠标指针在窗口或控件内部移动时触发
  • 鼠标滚轮事件,用户滚动鼠标滚轮时触发
  • 鼠标悬停事件,当鼠标停留在控件上方一段时间触发

这些函数名都是内置的,重写就不用写槽函数和发送信号

代码如下

这里有两个窗口,小控件的被大的挡住了

myLabel.h

#ifndefMYLABEL_H#defineMYLABEL_H#include<QWidget>#include<QLabel>classmyLabel:publicQLabel{public:// 显式构造函数explicitmyLabel(QWidget*parent=0);// 定义鼠标按下事件触发函数voidmousePressEvent(QMouseEvent*ev);// 定义鼠标移动事件触发函数voidmouseMoveEvent(QMouseEvent*ev);// 定义鼠标释放事件触发函数voidmouseReleaseEvent(QMouseEvent*ev);// 双击事件,双击时候会触发单击voidmouseDoubleClickEvent(QMouseEvent*ev);// 滚轮事件voidwheelEvent(QWheelEvent*ev);// 鼠标进入控件区域voidenterEvent(QEnterEvent*ev);// 鼠标离开控件区域voidleaveEvent(QEvent*ev);private:QWidget*QLabel;};#endif// MYLABEL_H

myLabel.cpp

#include"mylabel.h"#include<QMouseEvent>#include<QWidget>myLabel::myLabel(QWidget*parent):QLabel(parent){}voidmyLabel::mousePressEvent(QMouseEvent*ev){// 判断鼠标按下的是左键还是右键if(ev->button()==Qt::LeftButton){QString str=QString::fromLocal8Bit("鼠标左键按下:(%1,%2)").arg(QString::number(ev->x()),QString::number(ev->y()));this->setText(str);}else{QString str=QString::fromLocal8Bit("鼠标右键按下:(%1,%2)").arg(QString::number(ev->x()),QString::number(ev->y()));this->setText(str);}}voidmyLabel::mouseMoveEvent(QMouseEvent*ev){// 开启这个实施捕捉setMouseTracking(true);QString str=QString::fromLocal8Bit("鼠标移动:(%1,%2)").arg(QString::number(ev->x()),QString::number(ev->y()));this->setText(str);}voidmyLabel::mouseReleaseEvent(QMouseEvent*ev){this->setText(QString::fromLocal8Bit("鼠标松开"));}voidmyLabel::mouseDoubleClickEvent(QMouseEvent*ev){QString str=QString::fromLocal8Bit("触发双击:(%1, %2)").arg(QString::number(ev->x()),QString::number(ev->y()));this->setText(str);// 改变一下样式,看是否成功this->setStyleSheet("background-color: #ffcccc; font-size: 20px; border: 2px solid blue;");}voidmyLabel::wheelEvent(QWheelEvent*ev){// angleDalta().y() > 0 表示向前滚(远离客户)intdelta=ev->angleDelta().y();QString direction=delta>0?QString::fromLocal8Bit("向前滚(“放大”)"):QString::fromLocal8Bit("向后滚(“缩小”)");QString str=QString::fromLocal8Bit("滚轮滑动:数值 %1 -> %2").arg(delta).arg(direction);this->setText(str);}voidmyLabel::enterEvent(QEnterEvent*ev){this->setStyleSheet("background-color: lightblue; font-size: 20px; border: 2px solid blue");this->setText(QString::fromLocal8Bit("鼠标已进入区域"));}voidmyLabel::leaveEvent(QEvent*ev){this->setStyleSheet("background-color: lightgray; font-size: 20px; border: 2px solid black");this->setText(QString::fromLocal8Bit("鼠标已离开"));}

widget.cpp

#include"widget.h"#include"ui_widget.h"#include"mylabel.h"Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);this->setWindowTitle(QString::fromLocal8Bit("鼠标事件"));myLabel*label=newmyLabel(this);label->setText(QString::fromLocal8Bit("初始状态"));label->setFixedSize(400,400);label->setAlignment(Qt::AlignCenter);label->setStyleSheet("QLabel{border:1px solid red;}");label->show();}Widget::~Widget(){deleteui;}
http://www.zskr.cn/news/164260.html

相关文章:

  • RocketMQ 的消息堆积问题如何解决?
  • Java 操作 Markdown(1)--commonmark-java 使用
  • KeyBoredEvent
  • 二手回收一些业务概念
  • Open-AutoGLM安卓应用场景全景图:覆盖12类移动开发任务,你的项目也能立刻落地!
  • 如何监控TensorFlow镜像中GPU利用率和温度状态
  • AI智能体架构设计:MCP、A2A、AG-UI三大协议全解析!
  • 机器翻译系统搭建:基于TensorFlow镜像训练Seq2Seq模型
  • 安全审计:系统日志审计与分析,识别潜在威胁
  • AI安全与蒙昧时代:模型监管与开源之争
  • 提示词优化效率提升300%,Open-AutoGLM实战中的10个隐藏技巧
  • 算法工程师:AI算法、LLM开发、生成式人工智能面试题(2026通关指南)
  • 手把手教你部署Open-AutoGLM,阿里云环境下性能提升8倍的秘密
  • 70款H5游戏整合小游戏平台网站源码
  • 垂直领域的大模型应用探索:深度实测3款AI聊天回复工具的差异化表现
  • 无药守护童年:小儿推拿热门品牌推荐,家长安心之选 - 速递信息
  • 【开题答辩全过程】以 基于SpringBoot的智能家具物联网平台的设计与实现为例,包含答辩的问题和答案
  • 2025-2026北京婚姻家事律师事务所权威排行:四维评测体系下的TOP5精选 - 苏木2025
  • 【毕业设计】基于springboot的深圳市体育中心体育赛事管理(源码+文档+远程调试,全bao定制等)
  • 【专家亲授】Open-AutoGLM官方镜像源推荐(国内高速下载方案)
  • 从快手直播故障,看全景式业务监控势在必行!
  • Open-AutoGLM安卓集成难题破解:3大坑点+解决方案,99%新手都中招了
  • 使用TensorFlow镜像实现联邦学习保护用户隐私
  • 【开题答辩全过程】以 基于大数据的化妆品推荐系统为例,包含答辩的问题和答案
  • 使用TensorFlow镜像训练扩散模型(Diffusion Models)可行性探讨
  • 模型checkpoint保存频率如何影响训练效率?实战分析
  • Open-AutoGLM手机运行指南:仅需4个步骤,立即体验本地大模型
  • 2025最新!研究生必看8个AI论文平台测评与推荐
  • 【AI模型轻量化实战】:把Open-AutoGLM塞进手机的7种方法
  • 2025 年中国家装公司十强权威榜单:谁领跑行业新标杆 - 速递信息