2016-11-19 39 views
1

如何在QWidget::keyPressEvent中捕獲Ctrl + Plus?如何在Qt中捕捉Ctrl + Plus?

這是我當前的代碼(簡化):

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

其中,但只適用於鍵盤的字母數字組成部分「加號」的關鍵工程。當我按下數字鍵盤上的Ctrl + Plus鍵時,它什麼也不做。

謝謝

+0

那麼,添加調試打印到處理程序,打印'event'的相關字段。按數字鍵盤上的ctrl-plus時,它會打印什麼? – hyde

+0

@hyde謝謝。 –

回答

1

一些調試我發現,當按下數字鍵盤上的一個鍵,Qt::KeypadModifier被添加到事件修飾符後。所以簡單的解決方案是把這個添加到if語句中:

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

或者只是檢查控制是修飾符的一部分 if((event-> modifiers()&Qt :: ControlModifier)!= 0) –