Qt event事件分发

在这里插入图片描述

在Qt中,假如我们对APP做一个点击操作,这个点击操作可能会调动起某几个函数或方法。点击操作就属于一个事件,那么这个事件是如何与对应的函数联系起来呢?在Qt中是通过event()方法,去实现事件的分发,事件与对应的函数联系起来。
event()的返回值是bool类型,默认的返回值的false,表示事件需要被分发。如果返回值是true的话,就表示事件不会往下分发,而是被拦截起来。

Qt中的事件很多,就比如通过鼠标完成的事件,就有很多个,所以如果要拦截的话,拦截操作一般需要自己写,如下所示。先判断事件的类型,如果是需要拦截的类型,我们对它进行处理,对于不拦截的操作,用对应的默认函数去处理其它事件即可。
需要注意的是,拦截不是我们的目的,我们的目的是让大家明白,Qt中是通过event(),去分发事件的。

bool myLable::event(QEvent *e)
{
    //如果事件的类型是鼠标按下,则对此事件进行拦截
    if(e->type()==QEvent::MouseButtonPress)
    {
        QMouseEvent* ev= static_cast<QMouseEvent *>(e);//c++静态类型转换
        QString str = QString("QTEVENT::鼠标按下了 x = %1  y = %2").arg(ev->x()).arg(ev->y());
        qDebug()<<str;

        return true;//event事件返回true,拦截后续的操作
    }

    return QLabel::event(e);//对于其它事件,使用QQLabel下的event()进行处理
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值