一、自定义标签控件
二、编码实现
myLabel.h
#ifndef MYLABEL_H #define MYLABEL_H #include <QLabel> class MyLabel : public QLabel { Q_OBJECT public: explicit MyLabel(QWidget *parent = nullptr); //鼠标进入事件 void enterEvent(QEvent *event); //鼠标离开事件 void leaveEvent(QEvent *); //鼠标按下 void mousePressEvent(QMouseEvent *ev); //鼠标释放 void mouseReleaseEvent(QMouseEvent *ev); //鼠标移动 void mouseMoveEvent(QMouseEvent *ev); signals: }; #endif // MYLABEL_H
myLabel.cpp
#include "mylabel.h" #include<QDebug> #include<QMouseEvent> MyLabel::MyLabel(QWidget *parent) : QLabel{parent} { //设置鼠标追踪 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;} } //鼠标释放 void MyLabel::mouseReleaseEvent(QMouseEvent *ev){ if(ev->button()==Qt::LeftButton){ qDebug()<<"鼠标释放"; } } //鼠标移动 void MyLabel::mouseMoveEvent(QMouseEvent *ev){ //移动操作判断左右键 位与 // if(ev->buttons()&Qt::LeftButton){ qDebug()<<"鼠标移动"; // } }
三、测试