2014-02-13 54 views
0

我希望能隨時用鍵盤箭頭移動QSlider如何激活QSlider以允許隨時使用箭頭移動

我希望能夠點擊QWindow上的任何位置並保持激活QSlider以用箭頭移動光標。

我的問題是,只有在我們點擊QSlider之前,才能用箭頭移動光標。

我希望我的問題很清楚。

有沒有人知道如何在沒有點擊QSlider之前用鍵盤上的箭頭移動QSlider

回答

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); 
        } 
    } 
    
+0

好的謝謝我做到了。我在你發給我的代碼中的'if'之前添加了代碼'slider-> setFocus();'我也對keyReleaseEvent執行了同樣的操作。 – Jeanstackamort