2012-09-13 6 views
5

QSliderを使用しようとしていますが、誰かがスライダを置く位置Xをクリックした場合、スライダは常に値を最大値または最小値に設定してから値に設定しますXでは、不必要なステップがあります。 この手順を回避するにはどうすればよいですか?QSliderが不要なステップを実行する

私はQTDesignerの助けを借りてスライダーを実装しました。 残りのセットアップのためのコードは以下の通りです:QSliderを使用している場合

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

答えて

3

、私の経験では、現在位置の右にあるスライダーである位置でクリックしたときに(水平スライダを考慮して)と言います、 pageStepサイズでスライダの値を増やします。同様に、クリック位置が現在の位置の左にある場合、pageStepサイズだけスライダーの値が減少します。スライダをその場所にドラッグした場合にのみ、クリックしないで、必要な値に値が設定されます。これが問題であるかどうかを確認するには、pageStepサイズを設定してみてください。

+0

どうもありがとうに記載されている、これは良いヒントだったが、悲しいことに、私はまだ問題を解決することができませんでした。しかし、それは問題を少し良く理解するのに役立ちました。 QProgressDialogを使用しているのは、スライダの値を変更する操作が時間のかかる計算になるためです。その結果、pageStepサイズで値を増やした後、クリックした値に設定する信号が得られるように見えるので、スライダがうまくいくように見えます。 – evilSquirrel

1

はい、shubhが説明したように、ページセットはおそらく大きすぎます。 QSlidersの一般的な問題は、クリックした位置にジャンプするのではなく、その方向にページシフトを移動することです。

その問題に対する解決策がthis question

関連する問題