在QLineEdit中接收Escape-Event吗?

Elm*_*lmi 5 c++ qt key-events qt5

这是一个初学者的问题,但我找不到解决方案。

我使用的是一个自己的对象,该对象继承QLineEdit并删除数字作为输入(现在可以正常运行)。

现在,当用户按下退出按钮时,我想接收一个事件。textChanged()-event 不会发生这种情况。根据文档,没有特殊的转义事件。那么还可以怎么做呢?

谢谢!

Nej*_*jat 2

您可以实施keyPressEvent

void LineEdit::keyPressEvent(QKeyEvent *event)
{
    if (event->key() == Qt::Key_Escape)
    {
        ...
    }

    QLineEdit::keyPressEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

或者实施eventFilter

bool LineEdit::eventFilter(QObject  *obj, QEvent * event)
{

    if((LineEdit *)obj == this && event->type()==QEvent::KeyPress && ((QKeyEvent*)event)->key() == Qt::Key_Escape )
    {
        ...
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

使用该eventFilter方法时,请在构造函数中安装事件过滤器:

this->installEventFilter(this);
Run Code Online (Sandbox Code Playgroud)