自定义label组件类
.h文件
#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
class MyLabel : public QLabel
{
Q_OBJECT
public:
explicit MyLabel(QWidget *parent = nullptr);
protected:
//鼠标点击事件
void mousePressEvent(QMouseEvent *event);
//鼠标释放事件
void mouseReleaseEvent(QMouseEvent *ev);
//鼠标移动事件
void mouseMoveEvent(QMouseEvent *ev);
//进入窗口事件
void enterEvent(QEvent *event);
//离开窗口事件
void leaveEvent(QEvent *event);
signals:
};
#endif // MYLABEL_H
.cpp文件
#include "mylabel.h"
#include <QMouseEvent>
#include <QString>
MyLabel::MyLabel(QWidget *parent)
: QLabel{parent}
{
}
void MyLabel::mousePressEvent(QMouseEvent *event)
{
int x = event->x();
int y = event->y();
QString str = QString("Press X: %1 Y: %2").arg(x).arg(y);
this->setText(str);
}
void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
{
QString str = QString("Release X: %1 Y:%2").arg(ev->x()).arg(ev->y());
this->setText(str);
}
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
QString str = QString("Move X: %1 Y:%2").arg(ev->x()).arg(ev->y());
// this->setText(str);
}
void MyLabel::enterEvent(QEvent *event)
{
QString str = QString("进入窗口");
this->setText(str);
}
void MyLabel::leaveEvent(QEvent *event)
{
QString str = QString("离开窗口");
this->setText(str);
}
运行结果图