0、需求
在鼠标进入窗口实时捕捉所在位置,以及进行的操作。
1、方法
我们主要使用QWidget中的几个方法。
//鼠标进入
void enterEvent(QEvent *event);
//鼠标离开
void leaveEvent(QEvent *event);
//鼠标点击
void mousePressEvent(QMouseEvent *ev);
...还有很多
这里我们把需要获取鼠标的窗口类对这几个方法进行重写。
2、准备
- 利用ui加入label文本组件
- 编写cpp类,继承QLabel
.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 *event);
void mousePressEvent(QMouseEvent *ev);
signals:
public slots:
};
#endif // MYLABEL_H
.cpp文件
#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>
myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
}
//鼠标进入
void myLabel::enterEvent(QEvent *event)
{
qDebug()<<"鼠标进入了";
}
//鼠标离开
void myLabel::leaveEvent(QEvent *event)
{
qDebug()<<"鼠标离开了";
}
void myLabel::mousePressEvent(QMouseEvent *ev)
{
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;
}
- 对窗口进行提升
3、运行
尝试在label中移动与点击