2012-09-13 33 views
5

我想要使用QSlider,但如果有人點擊位置X,他想將滑塊放置在哪裏,滑塊始終將值設置爲最大值或最小值,然後再將值設置爲十,所以在這之間有一個不必要的步驟。 我該如何避免這一步驟?QSlider使不必要的步驟

我在QTDesigner的幫助下實現了滑塊。 對其餘設置的代碼如下:

_ui->horizontalSlider->setRange(1, aMaximalValue); 
_ui->horizontalSlider->setValue(theCurrentValue); 
connect(_ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(onValueOfSliderChanged(int))); 

回答

3

當使用QSlider,我的經驗說,當你點擊在這對當前位置的右側的滑塊上的某個位置(考慮水平滑塊)它會通過pageStep大小增加滑塊值。同樣,如果點擊值位於當前位置的左側,它將按照pageStep大小減小滑塊值。只有當您將滑塊拖動到該位置時,它纔會將值設置爲您想要的值,而不是單擊。嘗試設置pageStep大小,看看這是否是問題。

+0

多謝了說明,這是一個很好的提示,但可悲的是我還是沒能解決問題。但它有助於更​​好地理解問題。我正在使用QProgressDialog,因爲更改滑塊值的操作會導致耗時的計算。因此,滑塊看起來效果更好,因爲在通過pageStep大小增加值之後,它似乎也會將信號設置爲我單擊的值。 – evilSquirrel

1

是的,就像shubh解釋的那樣,pagestep可能太大了。 QSliders的一個常見問題是,它們不會跳到您點擊的位置,而是沿該方向移動頁面步驟。

解決這一問題已this question