标签+鼠标
QEvent
需求鼠标进入控件范围会进行相关操作
在QEnterEvent类中
[virtual protected] void QWidget::enterEvent(QEnterEvent *event)
虚成员函数可以进行重写
实现鼠标进入或离开Lable会打印输出
新建一个父类为QWidget的名字为mylable的C++类文件
先声明在.h文件这
//鼠标进入事件
void enterEvent(QEnterEvent *event);
//鼠标离开事件
void leaveEvent(QEvent *event);
在.cpp文件中实现为
//鼠标进入事件
void myLable::enterEvent(QEnterEvent *event)
{
qDebug()<<"鼠标进入";
}
//鼠标离开事件
void myLable::leaveEvent(QEvent *event)
{
qDebug()<<"鼠标离开";
}
然后在ui界面拉一个Lable,右键提升为,可以看到标签的基类为QLable,而我们之前创建是基类为QWidget,所以要改为一样的QLable,
三个地方:
头文件
#include <QLabel>
.h文件中
class myLable : public QLabel
{
Q_OBJECT
public:
explicit myLable(QWidget *parent = nullptr);
//鼠标进入事件
void enterEvent(QEnterEvent *event);
//鼠标离开事件
void leaveEvent(QEvent *event);
signals:
};
.cpp文件中
myLable::myLable(QWidget *parent)
: QLabel{
parent}
{
}
再提升为,把类明myLable粘贴过来,添加,提升为,就可以实现相关打印输出功能了
鼠标事件的重新实现
在QLabel中有Reimplemented Protected Functions
有重新实现的保护函数
和鼠标事件相关的有
virtual void mouseMoveEvent(QMouseEvent *ev) override
virtual void mousePressEvent(QMouseEvent *ev) override
virtual void mouseReleaseEvent(QMouseEvent *ev) override
先在.h文件中进行声明
//重写
virtual void mouseMoveEvent