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);
    }

  • 相关阅读:
    Mac-安装Git以及Git的配置
    Mac 安装Maven,并设置环境变量
    Mac Tab自动补全键
    Eclipse 代码快捷键模板(一)
    网易博客迁移(2011-05-27)
    前端JS插件整理
    Ajax请求二进制流并在页面展示
    IDE中使用System.getProperty()获取一些属性
    Spring Boot:快速入门(二)
    c 语言 指针 与地址
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3562348.html
Copyright © 2011-2022 走看看