QT 安装事件过滤器

创建事件过滤器的两个步骤:

1、通过对目标对象调用installEventFilter()来注册监视对象。
2、在监视对象的eventFilter()函数中处理目标对象的事件。

事件过滤器一旦被注册,放发给被监视对象的被监视的事件在它们到达目的地之前就会先发给eventFilter()函数。如果在事件处理函数中没有被处理,它将把事件发送给指定目标

事件过滤器的实现:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
     if(/*根据obj判断对象*/)
    if(/*根据event->type() 判断事件类型*/)
    {
       //时间处理逻辑
       }
       //调用父类中的同名函数
       return QWidget::eventFilter(obj,event);
  }

例:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
        ....
        firstNameEdit->installEventFilter(this);
        lastNameEdit->installEventFilter(this);
        CityEdit->installEventFilter(this);
        phoneNumberEdit->installEventFilter(this);
   }
        
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
     if(obj ==  firstNameEdit || obj ==  lastNameEdit || obj ==  CityEdit || obj == phoneNumberEdit)
    if(event->type() == QEvent::KeyPress)
    {
        QKeyEvent * pEvent = dynamic_cast<QKeyEvent *>(event);
        if(pEvent->key() == Qt::Key_Space)
        {
             focusNextChind();
             return true;
         }
       }
       return QWidget::eventFilter(obj,event);
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值