首页 文章

Qt 4.6和OpenGL:如何同时捕获具有三个不同小部件的键盘按键?

提问于
浏览
1

我在Qt Creator中创建了一个表单,并在表单中添加了三个自定义QWidgets(都是同一个名为Renderer的类) . 我希望除了表单之外的所有三个小部件在用户按下Alt键时得到通知,但我现在甚至无法让它工作 .

我将void keyPressEvent(QKeyEvent *)和void keyReleaseEvent(QKeyEvent *)添加到Renderer类中,但根本没有调用这些函数...(未触发断点)按键功能受到保护 .

void Renderer::keyPressEvent(QKeyEvent *event) {
    switch(event->key()) {
    case Qt::Key_Alt: {
        isAltPressed = true;
        cout << "alt got pressed" << endl;
        break;
    }
    default:
        break;
    }
}

void Renderer::keyReleaseEvent(QKeyEvent *event) {
    switch(event->key()) {
    case Qt::Key_Alt: {
        isAltPressed = false;
        cout << "alt released" << endl;
        break;
    }
    default:
        break;
    }
}

我在这里错过了什么吗?

另外,为了让所有三个小部件同时注册键盘按键,我还需要做些什么吗?

非常感谢 .

1 回答

  • 3

    你的focusPolicy是什么?键盘事件只会转移到具有焦点的窗口小部件(您可以自己调用其他处理程序) .

相关问题