2013-11-27 100 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函數被調用每次我按一個鍵,但是當我釋放該鍵時,不會調用keyReleaseEvent。我想念什麼?

+0

您是否嘗試過調試,以確保你沒有進入這個方法(在設置一個破發點?函數的第一行) –

+0

你的表單中有MainMenu嗎?它會影響行爲。 – deepmax

+0

@VahidNateghi我試過了,它從來沒有進入該方法。 –

回答

0

我覺得你應該先啓用鼠標事件,在您的建築功能添加setMouseTracking(true);,就像這樣:

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

鼠標跟蹤如何與此相關?無論如何,我試圖添加它,但沒有任何改變。 –

+0

對不起。我犯了一個錯誤。 – hahaya