我想了解如何用Qt處理各種事件,並發現我無法理解的關鍵修飾符的問題,例如, CtrlShiftAlt等我在Qt Creator中創建了一個默認的Qt GUI應用程序,用於擴展QMainWindow,並發現下面的示例不會產生可理解的結果。捕獲修飾鍵Qt
void MainWindow::keyPressEvent(QKeyEvent *event)
{
qDebug() << "Modifier " << event->modifiers().testFlag(Qt::ControlModifier);
qDebug() << "Key " << event->key();
qDebug() << "Brute force " << (event->key() == Qt::Key_Control);
}
當brute force方法返回正確的值時,對事件使用modifiers()函數永遠不會成立。
我做錯了什麼?
看起來情節變厚了。只有當另一個鍵被按下時,修飾符才起作用。如果我按Ctrl您建議的if語句不會成立。如果我按Ctrl + 任何換檔修改器的作品。測試正在OSX 10.8.4上執行,這可能會影響此... – user29291
進一步的測試顯示,使用 if(event-> modifiers()&Qt :: ControlModifier)和任何其他修改器僅在keyPressEvent,並且只有當另一個鍵與修飾符一起被觸擊時才能正常工作。最終目標是將這項工作放在事件過濾器中進行輪子事件,但這根本不起作用。 – user29291
查看更新的答案。讓我知道這是否適合你。 –