Qt keyPressEvent错误

时间:2016-10-05 15:38:29

标签: c++ qt keypress qwidget qkeyevent

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

  

“左边的' - > key'必须指向class / struct / union / generic type”。

考虑到GUI是一个派生自QWidget类的类,如何才能正确地抓住按键?

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

keyPressEvent声明如下:

protected:    
    virtual void keyPressEvent(QKeyEvent *event);

1 个答案:

答案 0 :(得分:1)

你必须包括

#include <QKeyEvent>

然后它应该按预期工作。

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

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

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