0

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

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

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

我希望我的问题足够清楚。

有谁知道如何在QSlider不点击之前移动键盘的箭头QSlider

4

1 回答 1

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);
      }
    }
    
于 2014-02-13T22:01:48.643 回答