Я хотел бы быть в состоянии переместить QSlider
со стрелками клавиатуры в любое время.
Я хочу иметь возможность щелкнуть в любом месте окна QWindow и сохранить QSlider
активирован для перемещения курсора стрелками.
Моя проблема в том, что перемещение курсора со стрелками разрешено только если мы нажмем QSlider
до.
Я надеюсь, что мой вопрос достаточно ясен.
Кто-нибудь знает, как двигать QSlider
со стрелками клавиатуры, не нажимая на QSlider
прежде чем, пожалуйста?
Есть два подхода:
В терминах Qt вы бы хотели сфокусировать слайдер. Виджеты имеют setFocus
метод, поэтому вам нужно позвонить slider->setFocus(Qt::OtherFocusReason)
,
Поскольку вы хотите, чтобы ползунок получал фокус всякий раз, когда основное окно имеет фокус, вам нужно поместить setFocus
позвоните в вашу реализацию focusInEvent
для родительского виджета.
Вы можете переслать ключевые события из базового виджета на слайдер. В родительском виджете переопределение keyPressEvent
а также keyReleaseEvent
, Когда нужные ключи обнаружены, переместите их на ползунок:
// same for keyReleaseEvent!
void MyWindow::keyPressEvent(QKeyEvent * ev) {
if (ev->key() == Qt::Key_Up || ev->key() == Qt::Key_Down) {
slider->event(ev);
}
}
Других решений пока нет …