Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QlineEdit上的Qt按键事件_C++_Qt - Fatal编程技术网

C++ QlineEdit上的Qt按键事件

C++ QlineEdit上的Qt按键事件,c++,qt,C++,Qt,我在网上搜索了如何只在特定的QWidget(QlineEdit)上捕获按键事件 一种方法是从该类继承并超越虚拟按键功能, 但我不能这样做,因为我正在使用QtDesigner(有可能使用QtDesigner吗?) 我还试图在整个窗口上覆盖按键事件,但我只需要在特定的lineEdit处于活动状态时过滤事件,我找不到这样做的方法(但必须有方法) 总之,解决这个问题的最好办法是什么?谢谢:)不,您不能使用Designer执行此操作。如果您不想使用继承,则应使用事件筛选器。例如: bool Dialog:

我在网上搜索了如何只在特定的QWidget(QlineEdit)上捕获按键事件 一种方法是从该类继承并超越虚拟按键功能, 但我不能这样做,因为我正在使用QtDesigner(有可能使用QtDesigner吗?)

我还试图在整个窗口上覆盖按键事件,但我只需要在特定的lineEdit处于活动状态时过滤事件,我找不到这样做的方法(但必须有方法)


总之,解决这个问题的最好办法是什么?谢谢:)

不,您不能使用
Designer
执行此操作。如果您不想使用继承,则应使用事件筛选器。例如:

bool Dialog::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == ui->lineEdit && event->type() == QEvent::KeyPress)
    {
        QKeyEvent *key = static_cast<QKeyEvent *>(event);
        qDebug() << "pressed"<< key->key();
    }
    return QObject::eventFilter(obj, event);
}


谢谢:)你指的aApp到底是什么?main.cpp文件中的app对象?它可以工作,但仅当焦点位于app的主窗口时捕捉事件,我不应该执行ui->lineEdit.installEventFilter()之类的操作吗?@user3798072了解详细信息。它从lineEdit捕获事件,如果筛选器无法从lineEdit捕获事件,则lineEdit现在没有此事件。
protected:
    bool eventFilter(QObject *obj, QEvent *event);//in Dialog header
qApp->installEventFilter(this);//in Dialog constructor