我正在尝试理解如何使用Qt处理各种事件,并发现了一个我无法理解的问题,即关于键盘修饰符,例如Ctrl Shift Alt等。我在Qt Creator中创建了一个默认的Qt GUI应用程序,扩展了QMainWindow,并发现以下示例没有产生可理解的结果。
void MainWindow::keyPressEvent(QKeyEvent *event)
{
qDebug() << "Modifier " << event->modifiers().testFlag(Qt::ControlModifier);
qDebug() << "Key " << event->key();
qDebug() << "Brute force " << (event->key() == Qt::Key_Control);
}
使用事件中的modifiers()函数永远不会返回正确值,而暴力方法可以返回正确值。我做错了什么?
if(event->modifiers() & Qt::ControlModifier)
和其他修饰键只在keyPressEvent中起作用,并且仅在与修饰键同时按下另一个键时才能正常工作。最终目标是使其在滚轮事件的eventFilter中起作用,但这对于那个并不起作用。 - user29291