项目场景:
Qt应用中某个控件响应回车进行特定动作。
问题描述:
使用Qt自带setShortcut()方法设置,只响应中间的回车快捷键。
ui->btn->setShortcut(Qt::Key_Enter);
ui->btn->setShortcut(Qt::Key_Return);
原因分析:
具体原因未知,只是发现通过
setShortcut()设置多个快捷键时,只有最后一个设置会生效。
例如:上述代码中的Key_Return生效。
解决方案:
一个仍然用setShortcut()方法,另一个用键盘事件过滤器或者我下面的这种办法。
ui->btn->setFocus();
ui->btn->setDefault(true);
ui->btn->setShortcut( QKeySequence::InsertParagraphSeparator );
ui->btn->setShortcut(Qt::Key_Return);
QShortcut *keyEnter = new QShortcut(QKeySequence("Enter"),ui->btn);
keyEnter->setContext(Qt::WindowShortcut);
QObject::connect(keyEnter,&QShortcut::activated,ui->btn,&QPushButton::click);
注意:控件的focus和defult的属性要更改,设置不对可能达不到想要效果。