Qt学习笔记——鼠标事件

概述

  • 要实现一个控件的鼠标事件,可以直接新建一个类继承自该控件,然后重写鼠标的各种触发事件,最后再将控件提升为该类即可

实现

  1.  
  2.  
  3.  可重写的几个鼠标事件
  •                         

案例

代码

#include "mylabel.h"
#include "QDebug"
#include "QMouseEvent"

MyLabel::MyLabel(QWidget *parent)
    : QLabel{parent}
{
    //设置鼠标追踪
    //如果不设置鼠标追踪  那鼠标移动的事件只有当鼠标按键按下后移动时才会触发
    //设置了鼠标追踪后 鼠标移动的事件会在鼠标进入到控件后移动时触发
    setMouseTracking(true);
}

//鼠标进入事件
void MyLabel::enterEvent(QEnterEvent *event)
{
    qDebug() << "鼠标进入了";
}

//鼠标离开事件
void MyLabel::leaveEvent(QEvent *event)
{
    qDebug() << "鼠标离开了";
}

//鼠标移动
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
    //左键按下执行
    if(ev->buttons() & Qt::LeftButton)
    {
        qDebug() << "鼠标移动";
    }

}

//鼠标按下
void MyLabel::mousePressEvent(QMouseEvent *ev)
{
    //左键按下执行
    if(ev->button()==Qt::LeftButton)
    {
        QString str = QString("鼠标按下 x=%1 y=%2 gx=%3 gy=%4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
        qDebug() << str;
    }

}

//鼠标释放
void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
{
    qDebug() << "鼠标释放";
}

演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值