美文网首页
事件分发器event,事件过滤器eventFilter

事件分发器event,事件过滤器eventFilter

作者: xqiiitan | 来源:发表于2025-05-04 18:35 被阅读0次

Day04. 事件。

QApplication类:
while(GetMessage(msg)) {}

窗口:事件分发器 event()

mouseEvent、mousePress、timer、 keyPress

1.event函数。事件分发器

事件分发器作用:过滤事件、虚函数-实现某个功能。
protected:
bool event(QEvent *e);

// .cpp复写方法
bool MyLabel::event(QEvent e)
{
//返回true,代表事件被处理过了,不继续向下分发。
//false,事件没有被处理,会继续向下分发
/
switch(e->type())
{
case QEvent::MouseMove:
mouseMoveEvent(e);
break;
case QEvent::Timer:
timerEvent(e);
break;
}*/
//过滤定时器事件
if(e->type == QEvent::Timer) return true;
return QLabel::event(e); //让父类执行默认的处理
}

2.事件过滤器 eventFilter

事件进入窗口之前被拦截,eventFilter
1.需要过滤窗口的事件,需要给该窗口安装事件过滤器。事件进入不到该窗口。
2.需要在事件过滤器函数中,处理该事件。
在事件进入窗口之前,拦截事件。

函数:bool eventFilter(QObject *obj, QEvent *ev)

//widget.h
class Widget : public QWidget
{
protected:
bool eventFilter(QObject *obj, QEvent *ev);
private:
Ui::Widget *ui;
}

//widget.cpp

Widget::Widget(QWidget *parent) :QWidget,
    ui(new Ui::Widget) 
{
    ui->setupUi(this);
    //给MyLabel安装事件过滤器,参数:谁来过滤label的事件。
    ui->mylabel->installEventFilter(this);
}
bool Widget::eventFilter(QObject *obj, QEvent *ev)
{
    // 判断对象,避免多个label都安装了事件过滤器。
    if(((QLabel*)obj) == ui->mylabel) {
        //过滤事件
        if(e->type() == QEvent::MouseMove) {
            ui->mylabel->setText("++++++++++++");
            return true;
        }
    }
    // 执行默认处理
    return QWidget::eventFilter(obj, e);
}

相关文章

  • QT3

    1、事件处理2、定时器3、Event事件分发器4、事件过滤器5、QPainter绘图6、绘图设备的使用7、Qfil...

  • Unreal4创建分发器事件0035bate1

    创建分发器事件 创建可以绑定并添加到事件分发器的事件列表中的事件。 使用事件分发器的菜单上的 事件(Event) ...

  • Unreal4调用事件分发器0034bate1

    调用事件分发器 调用事件分发器来执行事件列表中当前绑定的所有事件。 使用 Call 节点调用一个Event Dis...

  • Unreal4事件分发器0032bate1

    事件分发器 允许蓝图类向关卡蓝图报告其状态。 通过将一个或多个事件绑定到 事件分发器(Event Dispatch...

  • PyQt 用 eventFilter 拦截子控件的响应

    网上找不到关于 PyQt 使用 eventFilter (事件过滤器)的详细介绍,只好自己动手。 ? 近水楼台先得...

  • 浅谈View的事件分发机制(一)

    View的事件分发机制 标签(空格分隔): Android Event View 通过此篇文章整理自己关于事件分发...

  • 关于触摸

    事件分发 所有触摸(Event、手势、Button) 的事件分发流程都是一样的。都是根据HitTest 方法找到这...

  • Activity的事件分发源码分析

    Activity的事件分发流程图 dispatchTouchEvent(MotionEvent event) on...

  • Unreal4绑定和解除绑定事件0033bate1

    绑定和解除绑定事件 将事件添加到事件分发器事件列表(以及从中移除事件)。 如果事件分发器未绑定任何事件,对其进行调...

  • mysql存储过程和事件

    事件 什么是事件及其作用 event及“时间触发器”,与triggers的事件触发不同,event类似与linux...

网友评论

      本文标题:事件分发器event,事件过滤器eventFilter

      本文链接:https://www.haomeiwen.com/subject/allfijtx.html