1、首先新建一个带UI的项目,在UI界面中拖入一个label标签控件
2、添加一个新的类,命名为mylabel
在mylabel.h中添加代码
#ifndef MYLABEL_H
#define MYLABEL_H
#include <QWidget>
#include <QDebug>
#include <QLabel>
class mylabel : public QLabel//注意需要继承QLabel,因为添加的控件是一个QLabel类型的
{
Q_OBJECT
public:
explicit mylabel(QWidget *parent = nullptr);
//鼠标进入事件 子类重写父类的虚函数
virtual void enterEvent(QEvent *event);
//鼠标离开事件
virtual void leaveEvent(QEvent *event);
//鼠标按下
virtual void mousePressEvent(QMouseEvent *ev);
//鼠标释放
virtual void mouseReleaseEvent(QMouseEvent *ev);
//鼠标移动
virtual void mouseMoveEvent(QMouseEvent *ev);
signals:
};
#endif // MYLABEL_H
mylabel.cpp中添加代码
#include "mylabel.h"
#include <QMouseEvent>
mylabel::mylabel(QWidget *parent) : QLabel(parent)//构造基类QLabel
{
//设置鼠标追踪状态
setMouseTracking(true);
}
//鼠标进入事件
void mylabel::enterEvent(QEvent *event)
{
qDebug() << "鼠标进入了";
}
//鼠标离开事件
void mylabel::leaveEvent(QEvent *)
{
qDebug() << "鼠标离开了";
}
//鼠标按下
void mylabel::mousePressEvent(QMouseEvent *ev)
{
//当鼠标左键按下 提示信息
if( ev->button() == Qt::LeftButton)
{
//链式编程
QString str = QString( "鼠标按下了 x = %1 y = %2 globalX = %3 globalY = %4 " ).arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
qDebug() << str;
//qDebug() <<"鼠标按下了";
}
}
//鼠标释放
void mylabel::mouseReleaseEvent(QMouseEvent *ev)
{
if( ev->button() == Qt::LeftButton)
{
QString str = QString( "鼠标释放了 x = %1 y = %2 globalX = %3 globalY = %4 " ).arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
qDebug() << str;
// qDebug() <<"鼠标释放";
}
}
//鼠标移动
void mylabel::mouseMoveEvent(QMouseEvent *ev)
{
// if( ev->buttons() & Qt::LeftButton )
{
QString str = QString( "鼠标移动了 x = %1 y = %2 globalX = %3 globalY = %4 " ).arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
qDebug() << str;
// qDebug() <<"鼠标移动";
}
}