24 鼠标常用事件

文章展示了如何在Qt环境中创建一个自定义控件MyLabel,该控件继承自QLabel,并重写了enterEvent、leaveEvent、mousePressEvent、mouseReleaseEvent和mouseMoveEvent等鼠标事件处理函数,以实现对鼠标进入、离开、按下、释放和移动的响应。
摘要由CSDN通过智能技术生成
  • 鼠标进入:enterEvent
  • 鼠标离开:leaveEvent
  • 鼠标按下:mousePressEvent
  • 鼠标释放:mouseRelaseEvent
  • 鼠标移动:mouseMoveEvent

 提升为自定义控件MyLabel

 

代码:

//mylabel.h
#ifndef MYLABEL_H
#define MYLABEL_H

#include <QLabel>

class MyLabel : public QLabel
{
    Q_OBJECT
public:
    explicit MyLabel(QWidget *parent = 0);

    //鼠标进入
    void enterEvent(QEvent *);

    //鼠标离开
    void leaveEvent(QEvent *);

    //鼠标按下
    void mousePressEvent(QMouseEvent *ev);

    //鼠标释放
    void mouseReleaseEvent(QMouseEvent *ev);

    //鼠标移动
    void mouseMoveEvent(QMouseEvent *ev);

signals:

public slots:
};

#endif // MYLABEL_H
//mylabel.cpp
#include "mylabel.h"
#include "QDebug"
#include "QMouseEvent"

MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
    //设置鼠标追踪
//    this->setMouseTracking(true);
}

//鼠标进入
void MyLabel::enterEvent(QEvent *){
    qDebug()<<"鼠标进入";
}

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

//鼠标按下
void MyLabel::mousePressEvent(QMouseEvent *ev){
    //如果是鼠标左键按下,才打印信息
    if(ev->button() == Qt::LeftButton){
        //字符串格式化
        QString str = QString("鼠标按下: x= %1 , y= %2").arg(ev->x()).arg(ev->y());
        qDebug()<<str;
    }
}

//鼠标释放
void MyLabel::mouseReleaseEvent(QMouseEvent *ev){
    if(ev->button() == Qt::LeftButton){
        QString str = QString("鼠标释放: x= %1 , y= %2").arg(ev->x()).arg(ev->y());
        qDebug()<<str;
    }
}

//鼠标移动
void MyLabel::mouseMoveEvent(QMouseEvent *ev){
    //按位与运算&
    if(ev->buttons() & Qt::LeftButton){
        QString str = QString("鼠标移动: x= %1 , y= %2").arg(ev->x()).arg(ev->y());
        qDebug()<<str;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让我看看谁在学习

你的鼓励是我创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值