Qt 如何忽略不带';t输出字符

Qt 如何忽略不带';t输出字符,qt,Qt,我正在开发一个虚拟音乐键盘,允许你按下键盘上的键,让它播放音符。所以在我的MainWindow类中,我重新实现了keyPressEvent。我想忽略修改器(Control、Alt、Shift等)生成的事件,以及其他非字符键(如Tab、Backspace和Enter)生成的事件。像这样的东西很理想: void MainWindow::keyPressEvent(QKeyEvent *event) { if (!event->key().isCharacter())) {

我正在开发一个虚拟音乐键盘,允许你按下键盘上的键,让它播放音符。所以在我的MainWindow类中,我重新实现了keyPressEvent。我想忽略修改器(Control、Alt、Shift等)生成的事件,以及其他非字符键(如Tab、Backspace和Enter)生成的事件。像这样的东西很理想:

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if (!event->key().isCharacter()))
    {
        event->ignore();
        return;
    }

    // handle the event
}

有没有办法做到这一点(除了单独测试每个可能的非字符键)?如果不是,如果事件是一个修饰符,是否至少有一种方法可以轻松忽略它?

看起来像是您想要的
QKeyEvent::text()
看起来像是您想要的
QKeyEvent::text()
完美。。。我可以检查返回的QString的大小,如果它等于0,则忽略该事件。谢谢。Anthony:
isEmpty()
通常比检查
size()
更受欢迎。奇怪的是,在我的应用程序中,当我尝试此操作时,每次我键入字母时,它都会正确打印出字母,除了字母W、A、S和D。在这四种情况下,代码甚至不会进入覆盖的
keyPressEvent()
方法!完美的我可以检查返回的QString的大小,如果它等于0,则忽略该事件。谢谢。Anthony:
isEmpty()
通常比检查
size()
更受欢迎。奇怪的是,在我的应用程序中,当我尝试此操作时,每次我键入字母时,它都会正确打印出字母,除了字母W、A、S和D。在这四种情况下,代码甚至不会进入覆盖的
keyPressEvent()
方法!