c++ - QMainWindow::keyReleaseEvent 未按预期工作

标签 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 没有被调用。我错过了什么吗?

最佳答案

我认为你应该先启用鼠标事件,在你的构造函数中添加setMouseTracking(true);,像这样:

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

关于c++ - QMainWindow::keyReleaseEvent 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20237313/

相关文章:

python - QGridLayout 小部件重叠

c++ - 如何使用 Qt C++ 在 QDialog Window 和 QMainWindow 之间进行通信

c++ - 如何在出现特定字符后跳过字符串中的所有字符

c++ - 如何从Qt5中的QVariant获取QString形式的数据?

python - setGeometry() 紧接在 addWidget() 问题之后

c++ - 把QPixmap画成一个圆圈?

qt - 对 QMainWindow 的大小调整使用react以调整小部件的大小

c++ - MakeFile 只编译一个文件

android - 将普通的安卓屏幕拆分为谷歌纸板 View

c++ - 嵌套在类模板中的类的前向声明是否合法?