我希望能够随时用键盘的箭头移动QSlider
。
我希望能够点击QWindow上的任意位置并激活QSlider
以使用箭头移动光标。
我的问题是,只有在我们点击QSlider
之前,才允许使用箭头移动光标。
我希望我的问题很清楚。
是否有人知道如何使用键盘箭头移动QSlider
而不点击QSlider
之前?
答案 0 :(得分:1)
有两种方法:
在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);
}
}