Как сохранить активным QSlider, чтобы в любое время можно было перемещаться со стрелками

Я хотел бы быть в состоянии переместить QSlider со стрелками клавиатуры в любое время.

Я хочу иметь возможность щелкнуть в любом месте окна QWindow и сохранить QSlider активирован для перемещения курсора стрелками.

Моя проблема в том, что перемещение курсора со стрелками разрешено только если мы нажмем QSlider до.

Я надеюсь, что мой вопрос достаточно ясен.

Кто-нибудь знает, как двигать QSlider со стрелками клавиатуры, не нажимая на QSlider прежде чем, пожалуйста?

0

Решение

Есть два подхода:

  1. В терминах Qt вы бы хотели сфокусировать слайдер. Виджеты имеют setFocus метод, поэтому вам нужно позвонить slider->setFocus(Qt::OtherFocusReason),

    Поскольку вы хотите, чтобы ползунок получал фокус всякий раз, когда основное окно имеет фокус, вам нужно поместить setFocus позвоните в вашу реализацию focusInEvent для родительского виджета.

  2. Вы можете переслать ключевые события из базового виджета на слайдер. В родительском виджете переопределение keyPressEvent а также keyReleaseEvent, Когда нужные ключи обнаружены, переместите их на ползунок:

    // same for keyReleaseEvent!
    void MyWindow::keyPressEvent(QKeyEvent * ev) {
    if (ev->key() == Qt::Key_Up || ev->key() == Qt::Key_Down) {
    slider->event(ev);
    }
    }
    
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]