#include <QEvent>
static int cnt = 1;
bool EnterLeaveWidget::eventFilter(QObject* watched, QEvent* event)
if ( watched == lbl ) {
if ( event->type() == QEvent::Enter ) {
lbl->setText(QString("enterEvent: %1").arg(cnt++));
} else if ( event->type() == QEvent::Leave ) {
lbl->setText(QString("leaveEvent: %1").arg(cnt++));
return QWidget::eventFilter(watched, event);
这里判断下事件是否是发向 lbl
的,然后再做处理,因为还有可能监控其他的控件;
通过 QEvent
类的 type()
函数,可以判断事件的类型;
以上还通过一个静态变量,来对事件计数;
最后调用下父类的 QWidget::eventFilter(watched, event)
,其他事件交由父类处理;
此时运行,在当前窗口就可以截获发向 QLabel
的进入和离开事件了,如下:
14
qt中的
鼠标事件14.1 项目创建14.2
鼠标事件案例114.2.1 自定义控件创建14.2.2 自定义控件的
鼠标事件的声明与实现14.2.3 自定义控件的使用(可以使用
鼠标事件)1
4.3 鼠标事件案例21
4.3.1 自定义控件的
鼠标事件的声明与实现1
4.3.2 自定义控件的
鼠标事件的实现(优化)
14.1 项目创建
创建项目详细过程步骤:https://blog.csdn.net/qq_36926037/article/details/123720720
14.2
鼠标事件案例1
因为一开始label并没有事件捕捉的能力,所以要建立一个QLabel类给他提升一下,让他可以被追踪。
创建类时无法直接从QLabel中直接继承,所以选择从QWidget中继承。
首先,建立一个C++class,名为my_label,基类是QWidget
.h文件中将以下两处改为QLabel。
.cpp文件中将继承于QWidget修改成继承于QLabel