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

How to keep a QSlider activated to allow movements with arrows at any time

本文关键字:移动 许随时 何保持 QSlider 激活      更新时间:2023-10-16

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

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

我的问题是,仅当我们之前单击QSlider时,才允许使用箭头移动光标。

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

有谁知道如何用键盘的箭头移动QSlider而无需单击QSlider

有两种方法:

  1. 用Qt术语来说,你想给滑块一个焦点。小部件具有 setFocus 方法,因此您需要调用 slider->setFocus(Qt::OtherFocusReason)

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

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

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