如何激活QSlider以允许随时使用箭头移动

时间:2014-02-13 17:30:33

标签: c++ qt arrow-keys qslider

我希望能够随时用键盘的箭头移动QSlider

我希望能够点击QWindow上的任意位置并激活QSlider以使用箭头移动光标。

我的问题是,只有在我们点击QSlider之前,才允许使用箭头移动光标。

我希望我的问题很清楚。

是否有人知道如何使用键盘箭头移动QSlider而不点击QSlider之前?

1 个答案:

答案 0 :(得分:1)

有两种方法:

  1. 在Qt术语中,您希望为滑块指定焦点。小部件具有setFocus方法,因此您需要调用slider->setFocus(Qt::OtherFocusReason)

    由于您希望滑块在基础窗口具有焦点时获得焦点,因此您需要在setFocus的实现中为父窗口小部件调用focusInEvent

  2. 您可以将关键事件从基础窗口小部件转发到滑块。在父窗口小部件中,重新实现keyPressEventkeyReleaseEvent。检测到所需的键时,将它们转发到滑块:

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