QScrollBar Class
Le widget QScrollBar permet d'afficher une barre de défilement verticale ou horizontale. En savoir plus...
| En-tête : | #include <QScrollBar> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | 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
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 dont la taille dépasse celle du 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 associées à d’autres contrôles permettant une navigation plus précise. Qt affiche les barres de défilement d’une manière adaptée à chaque plateforme.
Si vous devez fournir une vue défilante sur un autre widget, il peut être plus pratique d’utiliser la classe ` QScrollArea `, car celle-ci fournit un widget de fenêtre d’affichage et des barres de défilement. QScrollBar est utile si vous devez implémenter des fonctionnalités similaires pour des widgets spécialisés à l’aide de l’ QAbstractScrollArea; par exemple, si vous décidez de créer une sous-classe de QAbstractItemView. Dans la plupart des autres situations où un curseur est utilisé pour obtenir une valeur dans une plage donnée, la classe QSlider peut être plus adaptée à vos besoins.
| 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.
|
Chaque barre de défilement possède une valeur indiquant la distance entre le curseur et le début de la barre ; cette valeur est obtenue à l’aide de ` value()` et définie à l’aide de ` setValue()`. Elle se situe toujours dans la plage de valeurs définie pour la barre de défilement, comprise entre ` minimum()` et ` maximum()`, inclus. La plage des valeurs acceptables peut être définie à l’aide de ` 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 trouvera à 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 trouvera à 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éfilante. Le pas de page correspond à la variation de la valeur lorsque l’utilisateur appuie sur les touches « Page Up » et « Page Down » ; il est défini à l’aide de la fonction ` setPageStep()`. Des modifications plus fines de la valeur, définies par le pas de ligne, sont effectuées à l’aide des touches de curseur ; cette valeur est définie à l’aide de la fonction ` 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. Vous n’avez pas besoin 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 créer une barre de défilement avec un pas de page de 20, une valeur minimale de 0 et une valeur maximale de 80. Nous obtiendrions ainsi une barre de défilement comportant cinq « pages ».
![]() | La 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 de tels 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 des nombres très grands, les barres de défilement sur les écrans actuels ne peuvent pas représenter de manière utile des plages supérieures à environ 100 000 pixels. Au-delà de cette limite, 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’auront qu’une utilité limitée.
ScrollBar hérite d’un ensemble complet de signaux 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 d'une interaction de 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 une interaction de l'utilisateur ou via la fonction triggerAction().
Une barre de défilement peut être contrôlée à l’aide du clavier, mais sa valeur par défaut pour ` focusPolicy()` est ` Qt::NoFocus`. Utilisez ` setFocusPolicy()` pour activer l’interaction au 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 une barre de défilement verticale d’un pas.
- PageUp permet de remonter d’une page.
- PageDown permet de descendre d’une page.
- « Home » permet d'accéder au début (minimum).
- Fin : se déplace jusqu'à la fin (maximum).
Le curseur lui-même peut être contrôlé à l'aide de la fonction triggerAction() pour simuler l'interaction de l'utilisateur avec les commandes de la barre de défilement. Cela s'avère utile si vous disposez de nombreux widgets différents utilisant une plage de valeurs commune.
La plupart des styles d'interface graphique utilisent la valeur de ` pageStep()` pour calculer la taille du curseur.
Voir également QScrollArea, QSlider, QDial, QSpinBox et l’exemple « Sliders ».
Documentation des fonctions membres
[explicit] QScrollBar::QScrollBar(QWidget *parent = nullptr)
Crée une barre de défilement verticale.
L'argument « parent » est transmis au constructeur « QWidget ».
Par défaut, la valeur de ` minimum ` est 0, celle de ` maximum ` est 99, la taille de ` singleStep ` est 1, celle de ` pageStep ` est 10 et la valeur initiale de ` value ` est 0.
[explicit] QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
Crée une barre de défilement à l'aide de l'orientation fournie.
L'argument ` parent ` est transmis au constructeur ` QWidget `.
Par défaut, minimum est défini sur 0, maximum sur 99, la taille de singleStep est de 1, celle de pageStep de 10, et la valeur initiale de value est de 0.
[virtual noexcept] QScrollBar::~QScrollBar()
Supprime 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 souhaitez pas que la barre de défilement dispose d’un menu contextuel, vous pouvez définir son paramètre ` contextMenuPolicy ` sur ` Qt::NoContextMenu`. Un style peut également contrôler ce comportement à l’aide de l’indicateur `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é. Enregistrez l’objet QMenu renvoyé pour le réutiliser ultérieurement ou définissez l’attribut WA_DeleteOnClose.
Les informations relatives à l’événement sont transmises via l’objet ` event `.
[since 6.10] QMenu *QScrollBar::createStandardContextMenu(QPoint position)
Crée le menu contextuel standard, qui s'affiche lorsque l'utilisateur clique avec le bouton droit de la souris sur la barre de défilement. Cette fonction est appelée depuis le gestionnaire par défaut ` contextMenuEvent()` et prend en paramètre l'objet ` position ` indiquant l'emplacement du clic de souris 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
Initialisez ` option ` avec les valeurs fournies à l'adresse suivante : QScrollBar. Cette méthode est utile pour les sous-classes qui ont besoin d'un ` QStyleOptionSlider`, mais ne souhaitent pas renseigner elles-mêmes toutes les informations.
Voir également 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 pour 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émentation de : 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.

