Sur cette page

QScrollBar Class

Le widget QScrollBar fournit une barre de défilement verticale ou horizontale. Plus d'informations...

En-tête : #include <QScrollBar>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : QAbstractSlider

Fonctions publiques

QScrollBar(QWidget *parent = nullptr)
QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~QScrollBar()
(since 6.10) QMenu *createStandardContextMenu(QPoint position)

Fonctions publiques réimplémentées

virtual bool event(QEvent *event) override
virtual QSize sizeHint() const override

Fonctions protégées

virtual void initStyleOption(QStyleOptionSlider *option) const

Fonctions protégées réimplémentées

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

Description détaillée

Une barre de défilement est un contrôle qui permet à l'utilisateur d'accéder à des parties d'un document qui est plus grand que le widget utilisé pour l'afficher. Elle fournit une indication visuelle de la position actuelle de l'utilisateur dans le document et de la partie du document qui est visible. Les barres de défilement sont généralement accompagnées d'autres contrôles qui permettent une navigation plus précise. Qt affiche les barres de défilement d'une manière adaptée à chaque plate-forme.

Si vous devez fournir une vue défilante sur un autre widget, il peut être plus pratique d'utiliser la classe QScrollArea car elle fournit un widget viewport et des barres de défilement. QScrollBar est utile si vous devez implémenter une fonctionnalité similaire pour des widgets spécialisés utilisant QAbstractScrollArea; par exemple, si vous décidez de sous-classer QAbstractItemView. Pour la plupart des autres situations où un contrôle de curseur est utilisé pour obtenir une valeur dans une plage donnée, la classe QSlider peut être plus appropriée à vos besoins.

Les éléments de la barre de défilement tels que le curseur, les flèches de défilement et le contrôle de la page

Les barres de défilement comprennent généralement quatre contrôles distincts : un curseur, des flèches de défilement et un contrôle de page.
  • a. Le curseur permet d'accéder rapidement à n'importe quelle partie du document, mais ne permet pas une navigation précise dans les documents volumineux.
  • b. Les flèches de défilement sont des boutons poussoirs qui peuvent être utilisés pour naviguer avec précision vers un endroit particulier d'un document. Dans le cas d'une barre de défilement verticale connectée à un éditeur de texte, ces flèches déplacent généralement la position actuelle d'une "ligne" vers le haut ou vers le bas et ajustent la position du curseur dans une faible mesure. Dans les éditeurs et les zones de liste, une "ligne" peut correspondre à une ligne de texte ; dans une visionneuse d'images, elle peut correspondre à 20 pixels.
  • c. Le contrôle de page est la zone sur laquelle le curseur est déplacé (l'arrière-plan de la barre de défilement). En cliquant ici, la barre de défilement se déplace d'une "page" vers le clic. Cette valeur correspond généralement à la longueur du curseur.

Chaque barre de défilement a une valeur qui indique la distance entre le curseur et le début de la barre de défilement ; cette valeur est obtenue à l'aide de value() et fixée à l'aide de setValue(). Cette valeur se situe toujours dans la plage de valeurs définie pour la barre de défilement, de minimum() à maximum() inclus. La plage de valeurs acceptables peut être définie avec setMinimum() et setMaximum(). À la valeur minimale, le bord supérieur du curseur (pour une barre de défilement verticale) ou le bord gauche (pour une barre de défilement horizontale) se trouve à l'extrémité supérieure (ou gauche) de la barre de défilement. À la valeur maximale, le bord inférieur (ou droit) du curseur se trouve à l'extrémité inférieure (ou droite) de la barre de défilement.

La longueur du curseur est généralement liée à la valeur du pas de page et représente généralement la proportion de la zone du document affichée dans une vue déroulante. Le pas de page est la valeur qui change lorsque l'utilisateur appuie sur les touches Page Up et Page Down. Il est défini à l'aide de la touche setPageStep(). Des changements plus petits de la valeur définie par le pas de ligne sont effectués à l'aide des touches du curseur, et cette quantité est définie avec setSingleStep().

Notez que la plage de valeurs utilisée est indépendante de la taille réelle du widget de la barre de défilement. Il n'est pas nécessaire d'en tenir compte lorsque vous choisissez les valeurs de la plage et du pas de page.

La plage de valeurs spécifiée pour la barre de défilement est souvent déterminée différemment de celle d'un QSlider car la longueur du curseur doit être prise en compte. Si nous avons un document de 100 lignes et que nous ne pouvons afficher que 20 lignes dans un widget, nous pouvons souhaiter construire une barre de défilement avec un pas de page de 20, une valeur minimale de 0 et une valeur maximale de 80. Nous aurions ainsi une barre de défilement de cinq "pages".

La longueur du document, la plage de défilement et le pas de page d'une barre de défilementLa relation entre la longueur d'un document, la plage de valeurs utilisée dans une barre de défilement et le pas de page est simple dans de nombreuses situations courantes. La plage de valeurs de la barre de défilement est déterminée en soustrayant un pas de page choisi d'une valeur représentant la longueur du document. Dans ce cas, l'équation suivante est utile : longueur du document = maximum() - minimum() + pageStep().

QScrollBar ne fournit que des plages d'entiers. Notez que bien que QScrollBar gère de très grands nombres, les barres de défilement sur les écrans actuels ne peuvent pas représenter utilement des plages supérieures à environ 100 000 pixels. Au-delà, il devient difficile pour l'utilisateur de contrôler le curseur à l'aide du clavier ou de la souris, et les flèches de défilement n'ont qu'une utilité limitée.

ScrollBar hérite d'un ensemble complet de signaux provenant de QAbstractSlider:

  • valueChanged() est émis lorsque la valeur de la barre de défilement a changé. La propriété tracking détermine si ce signal est émis lors de l'interaction avec l'utilisateur.
  • rangeChanged() est émis lorsque la plage de valeurs de la barre de défilement a changé.
  • sliderPressed() est émis lorsque l'utilisateur commence à faire glisser le curseur.
  • sliderMoved() est émis lorsque l'utilisateur fait glisser le curseur.
  • sliderReleased() est émis lorsque l'utilisateur relâche le curseur.
  • actionTriggered() est émis lorsque la barre de défilement est modifiée par l'interaction de l'utilisateur ou par la fonction triggerAction().

Une barre de défilement peut être contrôlée par le clavier, mais sa valeur par défaut focusPolicy() est Qt::NoFocus. Utilisez setFocusPolicy() pour activer l'interaction du clavier avec la barre de défilement :

  • Gauche/Droite déplace une barre de défilement horizontale d'un seul pas.
  • Les touches Haut/Bas déplacent la barre de défilement verticale d'un pas.
  • PageUp permet de monter d'une page.
  • PageDown permet de descendre d'une page.
  • Home se déplace au début (minimum).
  • Fin se déplace vers la fin (maximum).

Le curseur lui-même peut être contrôlé en utilisant la fonction triggerAction() pour simuler l'interaction de l'utilisateur avec les commandes de la barre de défilement. Cette fonction est utile si vous avez de nombreux widgets différents qui utilisent une plage de valeurs commune.

La plupart des styles d'interface graphique utilisent la valeur pageStep() pour calculer la taille de la barre de défilement.

Voir également QScrollArea, QSlider, QDial, QSpinBox, et Sliders Example.

Documentation sur les fonctions membres

[explicit] QScrollBar::QScrollBar(QWidget *parent = nullptr)

Construit une barre de défilement verticale.

L'argument parent est envoyé au constructeur QWidget.

La valeur par défaut de minimum est 0, celle de maximum est 99, la taille de singleStep est 1 et celle de pageStep est 10, et la valeur initiale de value est 0.

[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)

Construit une barre de défilement avec l'argument orientation.

L'argument parent est transmis au constructeur QWidget.

La valeur par défaut de minimum est 0, celle de maximum est 99, la taille de singleStep est 1 et celle de pageStep est 10, et la valeur initiale de value est 0.

[virtual noexcept] QScrollBar::~QScrollBar()

Détruit la barre de défilement.

[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)

Réimplémente : QWidget::contextMenuEvent(QContextMenuEvent *event).

Affiche le menu contextuel standard créé avec createStandardContextMenu().

Si vous ne voulez pas que la barre de défilement ait un menu contextuel, vous pouvez définir son contextMenuPolicy à Qt::NoContextMenu. Un style peut également contrôler ce comportement à l'aide de l'indice SH_ScrollBar_ContextMenu.

Si vous souhaitez personnaliser le menu contextuel, réimplémentez cette fonction. Si vous souhaitez étendre le menu contextuel standard, réimplémentez cette fonction, appelez createStandardContextMenu() et étendez le menu renvoyé. Vous pouvez soit stocker l'adresse QMenu renvoyée pour une réutilisation ultérieure, soit définir l'attribut WA_DeleteOnClose.

Les informations relatives à l'événement sont transmises dans l'objet event.

[since 6.10] QMenu *QScrollBar::createStandardContextMenu(QPoint position)

Crée le menu contextuel standard, qui s'affiche lorsque l'utilisateur clique sur la barre de défilement avec le bouton droit de la souris. Il est appelé à partir du gestionnaire par défaut contextMenuEvent() et prend l'adresse position où le clic de la souris a été effectué dans les coordonnées locales de ce widget. La propriété du menu contextuel est transférée à l'appelant.

Cette fonction a été introduite dans Qt 6.10.

[override virtual] bool QScrollBar::event(QEvent *event)

Réimplémente : QAbstractSlider::event(QEvent *e).

[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)

Réimplémente : QWidget::hideEvent(QHideEvent *event).

[virtual protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const

Initialiser option avec les valeurs de QScrollBar. Cette méthode est utile pour les sous-classes qui ont besoin d'un QStyleOptionSlider, mais qui ne veulent pas remplir toutes les informations elles-mêmes.

Voir aussi QStyleOption::initFrom().

[override virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)

Réimplémente : QWidget::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)

Réimplémente : QWidget::mousePressEvent(QMouseEvent *event).

[override virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)

Réimplémente : QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QScrollBar::paintEvent(QPaintEvent *)

Réimplémente : QWidget::paintEvent(QPaintEvent *event).

[override virtual] QSize QScrollBar::sizeHint() const

Réimplémente une fonction d'accès à la propriété : QWidget::sizeHint.

[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)

Réimplémente : QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change).

[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)

Réimplémente : 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.