Qt 鼠标按下移动释放事件

文章介绍了如何通过自定义控件LabelX扩展QLabel功能,实现鼠标按下、移动和释放事件的处理,并演示了如何启用鼠标跟踪以在鼠标悬浮时触发mousemove事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


QEvent::MouseButtonPress

​ 鼠标按下时,触发该事件,它对应的子类是QMouseEvent

QEvent::MouseMove

​ 鼠标移动时,触发该事件,它对应的子类是QMouseEvent

QEvent::MouseButtonRelease

​ 鼠标释放时,触发该事件,它对应的子类是QMouseEvent

1 通过自定义控件实现

自定义一个标签控件LabelX,让它继承自QLabel,然后重写父类的mousePressEventmouseReleaseEventmouseMoveEvent

代码如下:

// 在LabelX.h 中
#ifndef LABELX_H
#define LABELX_H

#include <QDebug>
#include <QLabel>
#include <QMouseEvent>

class LabelX : public QLabel {
    Q_OBJECT
public:
    explicit LabelX(QWidget *parent = nullptr);

protected:
    // 重写父类的方法
    void enterEvent(QEnterEvent *event);
    void leaveEvent(QEvent *event);

    // 按下,移动,释放事件
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);

signals:
};

#endif  // LABELX_H


// 在LabelX.cpp 中
#include "labelx.h"

LabelX::LabelX(QWidget *parent) : QLabel{parent} {
    // 实现鼠标的跟踪
    this->setMouseTracking(true);  // 默认false
}

static int cnt = 1;

void LabelX::enterEvent(QEnterEvent *event) {
    Q_UNUSED(event);
    // qDebug() <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值