2012-09-13 20 views
5

Estoy tratando de usar un QSlider, pero si alguien hace clic en una posición X, donde quiere poner el control deslizante, el control deslizante siempre establece el valor al máximo o mínimo al principio y luego al valor X. Entonces hay un paso innecesario entre ellos. ¿Cómo puedo evitar este paso?QSlider realiza los pasos necesarios

Implementé el control deslizante con la ayuda de QTDesigner. El código para la configuración restante es la siguiente:

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

Respuesta

3

Cuando se utiliza un QSlider, mi experiencia dice que cuando se hace clic en una posición determinada en el control deslizante que es a la derecha de la posición actual (considerando deslizador horizontal), aumentará el valor del control deslizante por tamaño de paso de página. De forma similar, si el valor del clic está a la izquierda de la posición actual, disminuirá el valor del control deslizante por tamaño de paso de página. Solo cuando arrastre el control deslizante a ese lugar, establecerá el valor a lo que desee y no al hacer clic. Intenta configurar el tamaño del paso de página para ver si este es el problema.

+0

Muchas gracias, esto era un buen toque, pero lamentablemente todavía no pudo solucionar el problema. Pero ayudó a entender el problema un poco mejor. Estoy usando un QProgressDialog porque la operación de cambiar el valor de los controles deslizantes da como resultado un cálculo que consume mucho tiempo. Como resultado, el control deslizante parece funcionar mejor, porque después de aumentar el valor por tamaño de paso de página, también parece obtener la señal para establecerlo en el valor en el que hice clic. – evilSquirrel

1

Sí, al igual que shubh explicó, el paso de página es probablemente demasiado grande. Un problema común con QSliders es que no saltan a la posición en la que ha hecho clic, sino que mueve un paso de página en esa dirección.

Una solución a este problema se ha descrito en this question

Cuestiones relacionadas