2011-08-14 11 views
9

Necesito un evento para detectar si un usuario ha movido la posición de la barra de desplazamiento a otra.¿Un evento de barra de desplazamiento al desplazarse?

En otras palabras, si el usuario se desplaza hacia arriba o hacia abajo, ¿sería posible captar una señal para que pueda saber que el desplazamiento ha cambiado su posición?

Creo que no es importante, pero la barra de desplazamiento a la que me refiero está dentro de un QGraphicsView.

Atentamente.

Editar:

QGraphicsView es para la visualización de los elementos en la pantalla, y si esos elementos son demasiado grandes que muestra las barras de desplazamiento que me refiero. Lo que necesito es saber cuándo el usuario cambia la posición de esas barras de desplazamiento.

Respuesta

6

Los controles deslizantes tienen una señal sliderMoved(int value), donde el valor es la nueva posición del control deslizante.

+0

He leído esta página (http://doc.qt.nokia.com/latest/qslider.html), pero no está en QGraphicsView. La diferencia entre esos dos es que QSlider parece usarse para cosas como un control deslizante para un reproductor de videos, o cosas por el estilo. QGraphicsView es para mostrar elementos en la pantalla, y si esos elementos son demasiado grandes, muestra las barras de desplazamiento a las que me refiero. Lo que necesito es saber cuándo el usuario cambia la posición de esas barras de desplazamiento. – Manolo

+0

¿No tiene acceso a horizontalScrollBar y verticalScrollBar desde QGraphicsView? –

+1

Oh, sí. Tienes razón, amigo. He podido hacer lo que quería accediendo a él con el método verticalScrollBar(). He usado su señal de "valueChanged()". ¡¡Gracias!! – Manolo

0

Si necesita que le avisemos cuando se cambia la posición de la barra de desplazamiento, debe subclase el QGraphicsView y vuelva a implementar el QWidget::mouseMoveEvent(QMouseEvent*). Para esto, también necesita habilitar el seguimiento del mouse. Here is Qt 4.7 QGraphicsView reference.

+0

La solución fue acceder a las barras de desplazamiento con sus métodos y usar las señales que estaba buscando, como ya he dicho en otra publicación. De todos modos, gracias por tu respuesta ^^. – Manolo

Cuestiones relacionadas