你好,我想请问QT中,电脑键盘与button相关联,长按电脑键盘键如何只触发一次button关联事件
QT中,可以使用QKeyEvent类的keyPressEvent()函数来实现,在keyPressEvent()函数中,可以检测到按键的按下事件,并且可以设置一个标志位,当按键按下时,标志位置为true,当按键松开时,标志位置为false,这样就可以实现只触发一次button关联事件。
不知道你这个问题是否已经解决, 如果还没有解决的话:用个标志位
bool SpacePressFlag = false; // 处理长按
void MainWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_Space: {
if (!SpacePressFlag && !event->isAutoRepeat()) {
SpacePressFlag = true;
// Do Something
}
break;
}
default:
break;
}
MainWindow::keyPressEvent(event);
}
void MainWindow::keyReleaseEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_Space: {
if (SpacePressFlag && !event->isAutoRepeat()) {
SpacePressFlag = false;
// Do Something
}
break;
}
default:
break;
}
MainWindow::keyReleaseEvent(event);
}
直接一句解决
if(event->isAutoRepeat())return;
//如果是一直按下按钮触发直接返回
希望有帮助