如何在Qt中捕获Ctrl+Plus?

Mar*_*cký 5 c++ qt

我怎样才能捕获Ctrl++QWidget::keyPressEvent

这是我当前的代码(简化):

void foo::keyPressEvent(QKeyEvent *event)
{
    if (event->modifiers() == Qt::ControlModifier)
    {
        switch (event->key())
        {
        case Qt::Key_Plus:
            // do something
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其有效,但仅适用于+键盘的字母数字部分。当我按数字键盘上的Ctrl+时+,它没有任何反应。

谢谢

Mar*_*cký 3

经过一些调试后,我发现当按下数字键盘上的某个键时,Qt::KeypadModifier会将其添加到事件修饰符中。所以简单的解决方案是将其添加到 if 语句中:

if (event->modifiers() == (Qt::ControlModifier | Qt::KeypadModifiers))
{
    // ...
Run Code Online (Sandbox Code Playgroud)