c++ - 如何在 Qt 中捕获 Ctrl+Plus?

标签 c++ qt

如何在 QWidget::keyPressEvent 中捕获 Ctrl++

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

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

有效,但仅适用于键盘字母数字部分的 +。当我在数字键盘上按 Ctrl++ 时,它没有执行任何操作。

谢谢

最佳答案

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

if (event->modifiers() == (Qt::ControlModifier | Qt::KeypadModifiers))
{
    // ...

关于c++ - 如何在 Qt 中捕获 Ctrl+Plus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691389/

相关文章:

qt - 如何在 QCustomPlot 中隐藏网格并仅显示零线?

c++ - 类的重新定义

QT:构建时 Ui 不会刷新

c++ - 向 char* 添加文本

c++ - 有没有一种好方法可以避免 C++ 中方法原型(prototype)的重复?

c++ - cmake 生成错误的 makefile

c++ - QTableWidget内存违规

c++ - 为什么这不起作用 : `int arr[size]` but this does `int* arr = new int[size]` ?

c++ - 插入到队列前面而不是后面

QThread 不能正常工作