我怎样才能捕获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+时+,它没有任何反应。
谢谢
经过一些调试后,我发现当按下数字键盘上的某个键时,Qt::KeypadModifier会将其添加到事件修饰符中。所以简单的解决方案是将其添加到 if 语句中:
if (event->modifiers() == (Qt::ControlModifier | Qt::KeypadModifiers))
{
// ...
Run Code Online (Sandbox Code Playgroud)