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
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 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 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 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.

