news 2026/4/15 19:06:11

MouseEvent

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 12:40:02

常见错误汇总:运行TensorFlow镜像时最容易遇到的10个问题

运行 TensorFlow 镜像时最容易遇到的 10 个问题与实战解决方案 在现代 AI 工程实践中&#xff0c;容器化部署已经成为标准操作。尤其是在使用 TensorFlow 构建生产级机器学习系统时&#xff0c;Docker 镜像极大简化了环境配置、版本管理和跨平台协作流程。然而&#xff0c;即便…

作者头像 李华
网站建设 2026/4/15 12:38:54

Liveness和Readiness探针在TensorFlow镜像中的应用

Liveness和Readiness探针在TensorFlow镜像中的应用 在现代AI系统中&#xff0c;一个训练好的模型被部署上线只是第一步。真正考验工程能力的&#xff0c;是它能否在复杂多变的生产环境中持续稳定地提供服务。尤其是在Kubernetes这样的容器编排平台上运行TensorFlow Serving时&a…

作者头像 李华
网站建设 2026/4/12 21:24:58

基于图像处理的电线杆输电线路电力设施异常识别方法研究

目录 选题背景意义数据集数据采集数据清洗与筛选数据标注数据增强 功能模块巡航主站系统防外破检测设备系统总站系统 算法理论卷积神经网络YOLO 算法关键帧提取算法 核心代码介绍图像识别模块消息推送模块数据处理模块 重难点和创新点重难点创新点 总结相关文献 选题背景意义 …

作者头像 李华
网站建设 2026/4/15 13:34:12

Open-AutoGLM技术全貌曝光(20年AI专家亲述架构设计逻辑)

第一章&#xff1a;Open-AutoGLM的技术到底是啥Open-AutoGLM 是一个面向自动化自然语言理解与生成任务的开源框架&#xff0c;其核心技术融合了图神经网络&#xff08;GNN&#xff09;与大规模语言模型&#xff08;LLM&#xff09;的协同推理机制。该架构通过构建语义-逻辑双通…

作者头像 李华
网站建设 2026/4/8 17:47:36

Java计算机毕设之基于springboot的深圳市体育中心体育赛事管理、场地管理、场地预约管理、赛事管理(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华