QMainWindow :: keyReleaseEvent未按预期工作

时间:2013-11-27 08:31:54

标签: c++ qt qmainwindow keyrelease

这是我的代码:

.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不会被调用。我想念一下吗?

1 个答案:

答案 0 :(得分:0)

我认为您应首先启用鼠标事件,在构造函数中添加setMouseTracking(true);,如下所示:

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