我想知道是否有一种方法可以从UI中删除所有键盘快捷键,因此我可以使用事件过滤器来获取关键命令。
目前,我在我的eventFilter()函数中有这个,它可以完成这项工作,但它也会影响我在那里的QSliders,QLineEdits和QButton - 我不想这样做。
bool LinkControl::eventFilter(QObject *o, QEvent *e)
{
QKeyEvent *keyEvent = NULL;
// qDebug() << "TYPE: " << e->type();
switch(e->type())
{
case 51:
// qDebug() << this->overrideControl;
if(this->overrideControl == true)
{
keyEvent = static_cast<QKeyEvent*>(e);
// this->handleKeyboardInput(true, keyEvent->key());
// emit handleInput(true, keyEvent->key());
this->handleKeyboardInput(true, keyEvent->key());
// qDebug() << "PRESS: " << keyEvent->key();
}
this->overrideControl = !this->overrideControl;
return true;
break;
case QEvent::KeyRelease:
keyEvent = static_cast<QKeyEvent*>(e);
// this->handleKeyboardInput(false, keyEvent->key());
// emit handleInput(false, keyEvent->key());
this->handleKeyboardInput(false, keyEvent->key());
// qDebug() << "RELEASE: " << keyEvent->key();
return true;
break;
default:
return QMainWindow::eventFilter(o, e);
}
}
例如,在我的handleKeyboardInput函数中,我有向上箭头键增加一个值,它会这样做,但如果它被选中,它也会移动一个QSlider。
谢谢。