Мне было интересно, если бы я мог удалить все сочетания клавиш из пользовательского интерфейса, чтобы я мог использовать фильтр событий, чтобы получить команды клавиш вместо этого.
В настоящее время у меня есть это в моей функции 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, если он выбран.
Спасибо.
Задача ещё не решена.