2016-10-05 15 views
0

나는이 코드 조각을 썼다, 그러나 나는이 오류가? Qt는 keyPressEvent 오류

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

keyPressEvent

는 다음과 같이 선언한다 :

protected:  
    virtual void keyPressEvent(QKeyEvent *event); 

답변

1

당신이 의도 한대로

#include <QKeyEvent>

다음 그것을 작동합니다 포함해야합니다. 외에도 당신이 좋아하는 Q_DECL_OVERRIDE 매크로를 사용해야에서


: @KubaOber 당신이 C++ 컴파일러는> = C++ (11) 중 하나 기본적으로 또는 지원 사용하는 경우, 언급 한 바와 같이

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

CONFIG += c++11으로 활성화하면 override 키워드를 대신 사용할 수 있습니다.

+0

'Q_DECL_OVERRIDE'보다는'override'를 제안합니다. Qt 5.7은 해당 키워드를 지원하지 않는 컴파일러에서 빌드되지 않습니다. Qt 5.7 이전에'Q_DECL_OVERRIDE'를 제안했지만, 이제는 불필요합니다. –

+0

@KubaOber 좋은 지적. 일반적으로'Q_DECL_OVERRIDE'는 Qt의 버전을 지정하지 않았기 때문에 이전 버전에도 안전한 베팅입니다. 나는 안전한 베팅을했지만 현재 두 가지 방법 모두를 언급하도록 조정했습니다. – deW1

+0

오 ... 분명히 존재하지 않기 때문에이 라이브러리를 포함 할 수 없다면 어떨까요? – Ana