03 Qt中是事件处理_哔哩哔哩_bilibili
1,新加mylabel文件,并 修改mylabe的基类QLabel
2 label提升为类
3,鼠标事件
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 *);
void leaveEvent(QEvent *);
void mouseMoveEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev) override;
void mousePressEvent(QMouseEvent *ev) override;
void keyPressEvent(QKeyEvent *ev) override;
signals:
};
#endif // MYLABEL_H
myLabel.cpp
#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>
myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
// 设置鼠标追踪
this->setMouseTracking(true);
}
void myLabel::enterEvent(QEvent *)
{
qDebug() << "enter------" << endl;
}
void myLabel::mouseMoveEvent(QMouseEvent *ev)
{
if (ev->button() == Qt::RightButton) // 瞬间的状态不能这样判断
// if (ev->buttons() & Qt::LeftButton)
// {
// QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
// qDebug() << "mouseMoveEvent---RightButton---" << str << endl;
// }
// 设置鼠标追踪为true的情况下,只要一进区域就会获得坐标
QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
qDebug() << "mouseMoveEvent---RightButton---" << str << endl;
}
void myLabel::mouseReleaseEvent(QMouseEvent *ev)
{
QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
qDebug() << "mouseReleaseEvent------" << str << endl;
}
void myLabel::mousePressEvent(QMouseEvent *ev){
if(ev->button() == Qt::RightButton)
{
QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
qDebug() << "mousePressEvent---LeftButton---" << str << endl;
}
else if (ev->button() == Qt:: LeftButton)
{
QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
qDebug() << "mousePressEvent---LeftButton---" << str << endl;
QString strs = QString("坐标为x= %1, y = %2").arg(ev->globalX()).arg(ev->globalY());
qDebug() << "mousePressEvent--globalX--LeftButton--globalY-" << strs << endl;
}
// else if (ev->button() == Qt::MidButton)
// {
// QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
// qDebug() << "mousePressEvent---MidButton---" << str << endl;
// }
else if (ev->button() == Qt::MiddleButton)
{
QString str = QString("坐标为x= %1, y = %2").arg(ev->x()).arg(ev->y());
qDebug() << "mousePressEvent---MidButton---" << str << endl;
}
}
void myLabel::keyPressEvent(QKeyEvent *ev)
{
// qDebug() << << endl;
}
void myLabel::leaveEvent(QEvent *){
qDebug() << "Leave------" << endl;
}