Qt:22.鼠标相关事件(实例演示——鼠标进入/离开某控件的事件、鼠标按下事件、鼠标释放事件、鼠标双击事件)

目录

1.实例演示------鼠标进入/离开某控件的事件:

2.鼠标按下事件:

3.鼠标释放事件:

4.鼠标双击事件:


1.实例演示------鼠标进入/离开某控件的事件:

  • 首先创建一个C++类文件 Label,填写好要继承的父类 QLabel。

  • 为创建好的类指定父元素。

    Label(QWidget* parent);

  • 并且补充好构造函数。

    Label::Label(QWidget* parent):QLabel(parent)

  • 在创建好的类中,重写两个事件,一个代表鼠标进入控件,另一个代表鼠标离开控件。

    void Label::enterEvent(QEvent *event)
    {
    this->setText("进来了");
    }

    void Label::leaveEvent(QEvent *event)
    {
    this->setText("出去了");
    }

  • 由于控件是在ui界面上创建的,ui界面创建的控件默认是Qt自己封装的。要将他提升为我们自定义的控件。

2.鼠标按下事件:

  • void Widget::mousePressEvent(QMouseEvent* event){}
  • 鼠标按下事件,当鼠标按下后可以通过event->x()/y()。来得到鼠标相对于控件所在的位置,单位是像素。
  • 也可以通过event->globalX()/globalY()。来获取相对于整个屏幕的位置,单位也是像素。
  • 可以触发这个事件的,包括鼠标的左右键,中键,侧键。但是有些鼠标特有的按键可能无法触发这个事件。
  • 可以通过event->button()==Qt::leftButton/Qt::rightButton判断按下的是哪个键位。

3.鼠标释放事件:

  • void Widget::mouseReleaseEvent(QMouseEvent* event){}
  • 可以通过event->button()==Qt::leftButton/Qt::rightButton判断释放的是哪个键位。

4.鼠标双击事件:

  • void Widget::mouseDoubleClickEvent(QMouseEvent* event){}
  • 单次移动会产生大量的事件,会消耗大量的资源。不建议使用。
  • 只有setMouseTracking(true)时,才会真正启动这个事件的捕捉。
相关推荐
喵了meme1 天前
C语言实战4
c语言·开发语言
码界奇点1 天前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
9ilk1 天前
【C++】--- 特殊类设计
开发语言·c++·后端
sali-tec1 天前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
生骨大头菜1 天前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我1 天前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
消失的旧时光-19431 天前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天1 天前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
4311媒体网1 天前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
GSDjisidi1 天前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展