QEvent::MouseButtonPress
鼠标按下时,触发该事件,它对应的子类是QMouseEvent
QEvent::MouseMove
鼠标移动时,触发该事件,它对应的子类是QMouseEvent
QEvent::MouseButtonRelease
鼠标释放时,触发该事件,它对应的子类是QMouseEvent
1 通过自定义控件实现
自定义一个标签控件LabelX
,让它继承自QLabel
,然后重写父类的mousePressEvent
和mouseReleaseEvent
和 mouseMoveEvent
。
代码如下:
// 在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() <