2013-11-27 11 views
0

을 예상대로 작동하지 않는 것은 내 코드입니다 :QMainWindow :: keyReleaseEvent 여기

.H 파일

class MyMainWindow : public QMainWindow 
{ 
    ... 
protected: 
    virtual void keyPressEvent(QKeyEvent *event); 
    virtual void keyReleaseEvent(QKeyEvent *event); 
private: 
    bool _altKeyDown; 
    ... 
} 

.cpp 파일

void MyMainWindow::keyPressEvent(QKeyEvent *event) { 
    if(event->key() == Qt::Key_Alt) { 
     _altKeyDown = true; 
    } 
} 

void MyMainWindow::keyReleaseEvent(QKeyEvent *event) { 
    if(getenv("DEBUG_MODE")) qDebug() << "keyReleaseEvent fired"; 
    if(event->key() == Qt::Key_Alt) { 
     _altKeyDown = false; 
    } 
} 

keyPressEvent 기능마다 호출되는 I 키를 누르지 만 키를 놓으면 keyReleaseEvent이 호출되지 않습니다. 내가 놓친 게 있니?

+0

당신은 당신이 (이 방법을 입력하지 않습니다에 브레이크 포인트를 설정하기 위해 디버거를 시도 함수의 첫 번째 줄) –

+0

양식에 MainMenu가 있습니까? 그것은 행동에 영향을 미칠 수 있습니다. – deepmax

+0

@VahidNateghi 시도했지만 결코 입력하지 않았습니다. –

답변

0

난 당신이 먼저 마우스 이벤트를 활성화 같이, 당신의 건설 기능에서 setMouseTracking(true);를 추가해야한다고 생각 :

MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent) 
{ 
    setMouseTracking(true); 
} 
+0

마우스 추적과 관련하여 어떤 차이가 있습니까? 어쨌든, 나는 그것을 추가하려했지만 아무 것도 바뀌지 않았다. –

+0

죄송합니다. 실수했습니다. – hahaya