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