QRubberBand Class
La classe QRubberBand permet de créer un rectangle ou une ligne pouvant servir à indiquer une sélection ou un périmètre. En savoir plus...
| En-tête : | #include <QRubberBand> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QWidget |
Types publics
| enum | Shape { Line, Rectangle } |
Fonctions publiques
| QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr) | |
| virtual | ~QRubberBand() |
| void | move(int x, int y) |
| void | move(const QPoint &p) |
| void | resize(int width, int height) |
| void | resize(const QSize &size) |
| void | setGeometry(const QRect &rect) |
| void | setGeometry(int x, int y, int width, int height) |
| QRubberBand::Shape | shape() const |
Fonctions protégées
| virtual void | initStyleOption(QStyleOptionRubberBand *option) const |
Fonctions protégées réimplémentées
| virtual void | changeEvent(QEvent *e) override |
| virtual bool | event(QEvent *e) override |
| virtual void | moveEvent(QMoveEvent *) override |
| virtual void | paintEvent(QPaintEvent *) override |
| virtual void | resizeEvent(QResizeEvent *) override |
| virtual void | showEvent(QShowEvent *e) override |
Description détaillée
Un « élastique » est souvent utilisé pour indiquer une nouvelle zone de délimitation (comme dans une fenêtre « QSplitter » ou une fenêtre « QDockWidget » en cours de détachement). Historiquement, cela a été implémenté à l’aide d’un « QPainter » et d’une opération XOR, mais cette approche ne fonctionne pas toujours correctement, car le rendu peut avoir lieu dans la fenêtre située sous l’élastique, avant que celui-ci n’ait été « effacé ».
Vous pouvez créer un QRubberBand chaque fois que vous avez besoin d’afficher un « rubber band » autour d’une zone donnée (ou pour représenter une simple ligne), puis appeler setGeometry(), move() ou resize() pour le positionner et le redimensionner. Une pratique courante consiste à effectuer cette opération en conjonction avec des événements de souris. Par exemple :
void Widget::mousePressEvent(QMouseEvent *event)
{
origin = event->pos();
if (!rubberBand)
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
rubberBand->hide();
// determine selection, for example using QRect::intersects()
// and QRect::contains().
}Si vous passez un parent au constructeur de QRubberBand, l’élastique ne s’affichera qu’à l’intérieur de son parent, mais restera au-dessus des autres widgets enfants. Si aucun parent n’est passé, QRubberBand agira comme un widget de niveau supérieur.
Appelez la méthode ` show()` pour rendre la bande élastique visible ; cela s'applique également lorsque la bande élastique n'est pas un widget de premier niveau. Masquer ou détruire le widget fera disparaître la bande élastique. La bande élastique peut être de type ` Rectangle ` ou ` Line ` (verticale ou horizontale), selon la valeur de ` shape()` qui lui a été transmise lors de sa construction.
Documentation sur les types de membres
enum QRubberBand::Shape
Cette énumération spécifie la forme que doit avoir une « QRubberBand ». Il s'agit d'une indication de dessin transmise au système de styles, qui peut être interprétée par chaque « QStyle ».
| Constante | Valeur | Description |
|---|---|---|
QRubberBand::Line | 0 | Un « QRubberBand » peut représenter une ligne verticale ou horizontale. La géométrie est toujours fournie via ` rect()` et, dans la plupart des styles, la ligne remplira la géométrie indiquée. |
QRubberBand::Rectangle | 1 | Une « QRubberBand » peut représenter un rectangle. Certains styles l'interpréteront comme un rectangle rempli (souvent semi-transparent) ou comme un contour rectangulaire. |
Documentation des fonctions membres
[explicit] QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
Crée un élastique de forme s, dont le parent est p.
Par défaut, un ruban de sélection rectangulaire (s est égal à Rectangle) utilise un masque, de sorte que seule une fine bordure du rectangle est visible. Certains styles (par exemple, le style natif de macOS) modifient ce comportement et appellent la fonction QWidget::setWindowOpacity() pour créer un rectangle de sélection rempli et semi-transparent.
[virtual noexcept] QRubberBand::~QRubberBand()
Destructeur.
[override virtual protected] void QRubberBand::changeEvent(QEvent *e)
Réimplémente : QWidget::changeEvent(QEvent *event).
[override virtual protected] bool QRubberBand::event(QEvent *e)
Réimplémente : QWidget::event(QEvent *event).
[virtual protected] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const
Initialisez ` option ` avec les valeurs fournies à l'adresse suivante : QRubberBand. Cette méthode est utile pour les sous-classes qui ont besoin d'un ` QStyleOptionRubberBand`, mais ne souhaitent pas renseigner elles-mêmes toutes les informations.
Voir également QStyleOption::initFrom().
void QRubberBand::move(int x, int y)
Déplace l'élastique vers le point (x, y).
Voir également resize().
void QRubberBand::move(const QPoint &p)
Déplace l'élastique vers le point p.
Il s'agit d'une fonction surchargée.
Voir également resize().
[override virtual protected] void QRubberBand::moveEvent(QMoveEvent *)
Réimplémente : QWidget::moveEvent(QMoveEvent *event).
[override virtual protected] void QRubberBand::paintEvent(QPaintEvent *)
Réimplémente : QWidget::paintEvent(QPaintEvent *event).
void QRubberBand::resize(int width, int height)
Redimensionne le « rubberband » de manière à ce que sa largeur soit width et sa hauteur height.
Voir aussi move().
void QRubberBand::resize(const QSize &size)
Redimensionne l'élastique pour que sa nouvelle taille soit size.
Il s'agit d'une fonction surchargée.
Voir également move().
[override virtual protected] void QRubberBand::resizeEvent(QResizeEvent *)
Réimplémente : QWidget::resizeEvent(QResizeEvent *event).
void QRubberBand::setGeometry(const QRect &rect)
Définit la géométrie de l'élastique sur rect, spécifiée dans le système de coordonnées de son widget parent.
Voir également QWidget::geometry.
void QRubberBand::setGeometry(int x, int y, int width, int height)
Définit la géométrie de l'élastique comme étant le rectangle dont le coin supérieur gauche se trouve au point (x, y) et dont les dimensions sont spécifiées par width et height. La géométrie est définie dans le système de coordonnées du widget parent.
Il s'agit d'une fonction surchargée.
QRubberBand::Shape QRubberBand::shape() const
Renvoie la forme de cet élastique. La forme ne peut être définie qu’au moment de la création.
[override virtual protected] void QRubberBand::showEvent(QShowEvent *e)
Réimplémente : QWidget::showEvent(QShowEvent *event).
© 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.