zoukankan      html  css  js  c++  java
  • QT 事件过滤器 eventFilter

    在监测的代码里执行需要的行为. 这可以用event Filter来达到. 设置一个event filter有两个步骤:

    1. 在目标对象上调用installEventFilter(),将监测对象注册到目标对象上.
    2. 在监测对象的eventFilter()方法里处理目标对象的事件.

    在ctor里注册监测对象是一个好地方:
    CustomerInfoDialog::CustomerInfoDialog(QWidget *parent) :QDialog(parent)
    {
        ...
        firstNameEdit->installEventFilter(this);
        lastNameEdit->installEventFilter(this);
        cityEdit->installEventFilter(this);
        phoneNumberEdit->installEventFilter(this);
     }

    一旦event Filter注册了, 发送到firstNameEdit, lastNameEdit, cityEdit和phoneNumberEdit的事件在被发送到原来的目的地之前, 会先发到CustomerInfoDialog的eventFilter()函数.

    这是接收这些事件的eventFilter()函数:
    bool CustomerInfoDialog::eventFilter(QObject *target, QEvent *event)
    {
        if (target == firstnameEdit || target == lastNameEdit
            || target == cityEdit || target == phoneNumberEdit)
        {
            if(event->type() == QEvent::KeyPress)
            {
                QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
                if (keyEvent->key() == Qt::Key_Space)
                {
                    focusNextChild();
                    return true;
                }
            }
        }
        return QDialog::eventFilter(target, event);
    }

  • 相关阅读:
    jquery中ajax请求的使用和四个步骤示例
    jzoj6094
    2019.03.27【GDOI2019】模拟 T3
    AGC019F
    浅谈高维前缀和
    刷题清单
    为什么要遍历两次?——个人对于kosaraju算法的理解
    我的黑客和渗透测试学习路线
    一个假猪套神器:NET CAT-NC
    kali linux(二):使用与介绍
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/3947060.html
Copyright © 2011-2022 走看看