Pregunta

estoy usando un QSlider (v4.6) para la entrada, así como para proporcionar información al usuario. Por los comentarios que llamaré el método setValue. Estoy tratando de encontrar una señal que se dispara sólo si el usuario modifica el valor. Las señales de fuego valueChanged cuando el usuario cambia el valor, así como cuando llamo setValue. sliderMoved sólo se desencadena cuando el usuario arrastra el control deslizante (no cuando se utiliza el teclado). Revisé los documentos de la API y parece que no puede encontrar nada. ¿Me estoy perdiendo de algo? Esto parece algo que sería común. Si no hay otra señal, ¿cómo me recomienda que simular esta funcionalidad? Cómo he de poner una bandera antes de llamar setValue, desconecte y vuelva a conectar la señal cada vez que llamo setValue ...?

¿Fue útil?

Solución

Buena pregunta, he comprobado la API y tampoco pudo encontrar una señal que se activa sólo si el valor fue modificado por el usuario. La solución que se proponen pueden ser la única opción, sólo tener en cuenta que usted no tenga que desconectar / conectar todas las señales, sólo tiene que utilizar el método QObject::blockSignals:

slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top