QScrollBar Class
El widget QScrollBar proporciona una barra de desplazamiento vertical u horizontal. Más...
| Cabecera: | #include <QScrollBar> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QAbstractSlider |
Funciones Públicas
| QScrollBar(QWidget *parent = nullptr) | |
| QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr) | |
| virtual | ~QScrollBar() |
(since 6.10) QMenu * | createStandardContextMenu(QPoint position) |
Funciones públicas reimplementadas
Funciones protegidas
| virtual void | initStyleOption(QStyleOptionSlider *option) const |
Funciones protegidas reimplementadas
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual void | hideEvent(QHideEvent *) override |
| virtual void | mouseMoveEvent(QMouseEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *e) override |
| virtual void | mouseReleaseEvent(QMouseEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
| virtual void | sliderChange(QAbstractSlider::SliderChange change) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
Descripción detallada
Una barra de desplazamiento es un control que permite al usuario acceder a partes de un documento que es más grande que el widget utilizado para mostrarlo. Proporciona una indicación visual de la posición actual del usuario dentro del documento y la cantidad del documento que es visible. Las barras de desplazamiento suelen ir acompañadas de otros controles que permiten una navegación más precisa. Qt muestra las barras de desplazamiento de un modo apropiado para cada plataforma.
Si necesitas proporcionar una vista de desplazamiento en otro widget, puede ser más conveniente utilizar la clase QScrollArea porque esta proporciona un widget de vista y barras de desplazamiento. QScrollBar es útil si necesitas implementar una funcionalidad similar para widgets especializados utilizando QAbstractScrollArea; por ejemplo, si decides subclasificar QAbstractItemView. Para la mayoría de las otras situaciones en las que se utiliza un control deslizante para obtener un valor dentro de un rango determinado, la clase QSlider puede ser más apropiada para sus necesidades.
| Las barras de desplazamiento suelen incluir cuatro controles separados: un control deslizante, flechas de desplazamiento y un control de página.
|
Cada barra de desplazamiento tiene un valor que indica a qué distancia se encuentra el deslizador del inicio de la barra de desplazamiento; se obtiene con value() y se fija con setValue(). Este valor siempre se encuentra dentro del rango de valores definidos para la barra de desplazamiento, desde minimum() hasta maximum() inclusive. El rango de valores aceptables puede fijarse con setMinimum() y setMaximum(). En el valor mínimo, el borde superior del deslizador (para una barra de desplazamiento vertical) o el borde izquierdo (para una barra de desplazamiento horizontal) estará en el extremo superior (o izquierdo) de la barra de desplazamiento. En el valor máximo, el borde inferior (o derecho) del deslizador estará en el extremo inferior (o derecho) de la barra de desplazamiento.
La longitud del deslizador suele estar relacionada con el valor del paso de página, y suele representar la proporción del área del documento que se muestra en una vista de desplazamiento. El paso de página es la cantidad en que cambia el valor cuando el usuario pulsa las teclas Page Up y Page Down, y se establece con setPageStep(). Los cambios más pequeños del valor definido por el paso de línea se realizan utilizando las teclas del cursor, y esta cantidad se establece con setSingleStep().
Tenga en cuenta que el rango de valores utilizado es independiente del tamaño real del widget de la barra de desplazamiento. No es necesario tenerlo en cuenta al elegir los valores para el rango y el paso de página.
El rango de valores especificado para la barra de desplazamiento suele determinarse de forma diferente a los de QSlider porque es necesario tener en cuenta la longitud del deslizador. Si tenemos un documento con 100 líneas, y sólo podemos mostrar 20 líneas en un widget, es posible que deseemos construir una barra de desplazamiento con un paso de página de 20, un valor mínimo de 0, y un valor máximo de 80. Esto nos daría una barra de desplazamiento con un paso de página de 20, un valor mínimo de 0, y un valor máximo de 80. Esto nos daría una barra de desplazamiento con cinco "páginas".
![]() | La relación entre la longitud de un documento, el rango de valores utilizados en una barra de desplazamiento y el paso de página es sencilla en muchas situaciones comunes. El rango de valores de la barra de desplazamiento se determina restando un paso de página elegido de algún valor que represente la longitud del documento. En tales casos, es útil la siguiente ecuación: longitud del documento = maximum() - minimum() + pageStep(). |
QScrollBar sólo proporciona rangos enteros. Tenga en cuenta que aunque QScrollBar maneja números muy grandes, las barras de desplazamiento en las pantallas actuales no pueden representar de forma útil rangos por encima de unos 100.000 píxeles. Más allá de eso, se hace difícil para el usuario controlar el deslizador usando el teclado o el ratón, y las flechas de desplazamiento tendrán un uso limitado.
ScrollBar hereda un amplio conjunto de señales de QAbstractSlider:
- valueChanged() se emite cuando el valor de la barra de desplazamiento ha cambiado. La propiedad tracking determina si esta señal se emite durante la interacción con el usuario.
- rangeChanged() se emite cuando el rango de valores de la barra de desplazamiento ha cambiado.
- sliderPressed() se emite cuando el usuario empieza a arrastrar el deslizador.
- sliderMoved() se emite cuando el usuario arrastra el deslizador.
- sliderReleased() se emite cuando el usuario suelta el deslizador.
- actionTriggered() se emite cuando la barra de desplazamiento se modifica por interacción del usuario o mediante la función triggerAction().
Una barra de desplazamiento puede ser controlada por el teclado, pero tiene un valor por defecto focusPolicy() de Qt::NoFocus. Utilice setFocusPolicy() para activar la interacción del teclado con la barra de desplazamiento:
- Izquierda/Derecha mueven una barra de desplazamiento horizontal un solo paso.
- Arriba/Abajo mueve una barra de desplazamiento vertical un solo paso.
- PageUp mueve una página hacia arriba.
- PageDown baja una página.
- Inicio se desplaza al principio (mínimo).
- Fin se desplaza al final (máximo).
El propio deslizador puede controlarse utilizando la función triggerAction() para simular la interacción del usuario con los controles de la barra de desplazamiento. Esto es útil si tienes muchos widgets diferentes que utilizan un rango común de valores.
La mayoría de los estilos GUI utilizan el valor pageStep() para calcular el tamaño del deslizador.
Ver también QScrollArea, QSlider, QDial, QSpinBox, y Ejemplo de Deslizadores.
Documentación de las funciones miembro
[explicit] QScrollBar::QScrollBar(QWidget *parent = nullptr)
Construye una barra de desplazamiento vertical.
El argumento parent se envía al constructor QWidget.
El valor por defecto de minimum es 0, el de maximum es 99, con un tamaño de singleStep de 1 y un tamaño de pageStep de 10, y un valor inicial de value de 0.
[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
Construye una barra de desplazamiento con la dirección orientation.
El argumento parent se pasa al constructor QWidget.
El valor predeterminado de minimum es 0, el de maximum es 99, con un tamaño de singleStep de 1 y un tamaño de pageStep de 10, y un valor inicial de value de 0.
[virtual noexcept] QScrollBar::~QScrollBar()
Destruye la barra de desplazamiento.
[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
Reimplementa: QWidget::contextMenuEvent(QContextMenuEvent *event).
Muestra el menú contextual estándar creado con createStandardContextMenu().
Si no quieres que la barra de desplazamiento tenga un menú contextual, puedes establecer su contextMenuPolicy a Qt::NoContextMenu. Un estilo también puede controlar este comportamiento usando la sugerencia SH_ScrollBar_ContextMenu.
Si desea personalizar el menú contextual, vuelva a implementar esta función. Si desea ampliar el menú contextual estándar, reimplemente esta función, llame a createStandardContextMenu() y amplíe el menú devuelto. Guarde el QMenu devuelto para reutilizarlo más tarde o establezca el atributo WA_DeleteOnClose.
La información sobre el evento se pasa en el objeto event.
[since 6.10] QMenu *QScrollBar::createStandardContextMenu(QPoint position)
Crea el menú contextual estándar, que se muestra cuando el usuario hace clic en la barra de desplazamiento con el botón derecho del ratón. Se llama desde el manejador por defecto contextMenuEvent() y toma el position donde se hizo clic con el ratón en las coordenadas locales de este widget. La propiedad del menú emergente se transfiere al llamador.
Esta función se introdujo en Qt 6.10.
[override virtual] bool QScrollBar::event(QEvent *event)
Reimplementa: QAbstractSlider::event(QEvent *e).
[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)
Reimplementa: QWidget::hideEvent(QHideEvent *event).
[virtual protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
Inicializa option con los valores de este QScrollBar. Este método es útil para subclases cuando necesitan un QStyleOptionSlider, pero no quieren rellenar toda la información ellos mismos.
Véase también QStyleOption::initFrom().
[override virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)
Reimplementa: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)
Reimplementa: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)
Reimplementa: QWidget::mouseReleaseEvent(QMouseEvent *event).
[override virtual protected] void QScrollBar::paintEvent(QPaintEvent *)
Reimplementa: QWidget::paintEvent(QPaintEvent *event).
[override virtual] QSize QScrollBar::sizeHint() const
Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.
[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)
Reimplementa: QAbstractSlider::sliderChange(cambio de QAbstractSlider::SliderChange).
[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)
Reimplementa: QAbstractSlider::wheelEvent(QWheelEvent *e).
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.

