Qt keyPressEvent 错误

Qt keyPressEvent Error

我写了这段代码,但是我得到了这个错误:

"left of '->key' must point to class/struct/union/generic type".

考虑到 GUI 是从 QWidget class 派生的 class,我怎样才能正确地捕捉到按键的按下?

void GUI::keyPressEvent(QKeyEvent *event)
{
    if (event->key()==Qt::Key_Up) {
        //do something
    }
}

keyPressEvent 声明如下:

protected:    
    virtual void keyPressEvent(QKeyEvent *event);

你必须包括

#include <QKeyEvent>

然后它应该按预期工作。


除此之外,您应该使用 Q_DECL_OVERRIDE 宏,例如:

protected:    
    virtual void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;

正如@KubaOber 提到的,如果您使用默认支持 >=C++11 的 C++ 编译器,或者您使用 CONFIG += c++11 激活它,那么您可以使用 override 关键字。