QRegion Class
La classe QRegion spécifie une région d'écrêtage pour un peintre. Plus d'informations...
| En-tête : | #include <QRegion> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- Membres dépréciés
- QRegion fait partie des classes de peinture et des classes implicitement partagées.
Types publics
| enum | RegionType { Rectangle, Ellipse } |
| const_iterator | |
| const_reverse_iterator |
Fonctions publiques
| QRegion() | |
| QRegion(const QBitmap &bm) | |
| QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill) | |
| QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle) | |
| QRegion(const QRect &r, QRegion::RegionType t = Rectangle) | |
| QRegion(const QRegion &r) | |
| QRegion(QRegion &&other) | |
| QRegion::const_iterator | begin() const |
| QRect | boundingRect() const |
| QRegion::const_iterator | cbegin() const |
| QRegion::const_iterator | cend() const |
| bool | contains(const QPoint &p) const |
| bool | contains(const QRect &r) const |
| QRegion::const_reverse_iterator | crbegin() const |
| QRegion::const_reverse_iterator | crend() const |
| QRegion::const_iterator | end() const |
| QRegion | intersected(const QRect &rect) const |
| QRegion | intersected(const QRegion &r) const |
| bool | intersects(const QRect &rect) const |
| bool | intersects(const QRegion ®ion) const |
| bool | isEmpty() const |
| bool | isNull() const |
| QRegion::const_reverse_iterator | rbegin() const |
| int | rectCount() const |
(since 6.8) QSpan<const QRect> | rects() const |
| QRegion::const_reverse_iterator | rend() const |
(since 6.8) void | setRects(QSpan<const QRect> rects) |
| QRegion | subtracted(const QRegion &r) const |
| void | swap(QRegion &other) |
(since 6.0) HRGN | toHRGN() const |
| void | translate(int dx, int dy) |
| void | translate(const QPoint &point) |
| QRegion | translated(int dx, int dy) const |
| QRegion | translated(const QPoint &p) const |
| QRegion | united(const QRect &rect) const |
| QRegion | united(const QRegion &r) const |
| QRegion | xored(const QRegion &r) const |
| operator QVariant() const | |
| bool | operator!=(const QRegion &other) const |
| QRegion | operator&(const QRegion &r) const |
| QRegion | operator&(const QRect &r) const |
| QRegion & | operator&=(const QRegion &r) |
| QRegion & | operator&=(const QRect &r) |
| QRegion | operator+(const QRegion &r) const |
| QRegion | operator+(const QRect &r) const |
| QRegion & | operator+=(const QRect &rect) |
| QRegion & | operator+=(const QRegion &r) |
| QRegion | operator-(const QRegion &r) const |
| QRegion & | operator-=(const QRegion &r) |
| QRegion & | operator=(QRegion &&other) |
| QRegion & | operator=(const QRegion &r) |
| bool | operator==(const QRegion &r) const |
| QRegion | operator^(const QRegion &r) const |
| QRegion & | operator^=(const QRegion &r) |
| QRegion | operator|(const QRegion &r) const |
| QRegion & | operator|=(const QRegion &r) |
Membres publics statiques
(since 6.0) QRegion | fromHRGN(HRGN hrgn) |
Non-membres apparentés
| QDataStream & | operator<<(QDataStream &s, const QRegion &r) |
| QDataStream & | operator>>(QDataStream &s, QRegion &r) |
Description détaillée
QRegion est utilisé avec QPainter::setClipRegion() pour limiter la zone de peinture à ce qui doit être peint. Il existe également une fonction QWidget::repaint() qui prend un paramètre QRegion. QRegion est le meilleur outil pour minimiser la surface de l'écran qui doit être mise à jour par une nouvelle peinture.
Cette classe n'est pas adaptée à la construction de formes pour le rendu, en particulier pour les contours. Utilisez QPainterPath pour créer des chemins et des formes à utiliser avec QPainter.
QRegion est une classe implicitement partagée.
Création et utilisation de régions
Une région peut être créée à partir d'un rectangle, d'une ellipse, d'un polygone ou d'une image bitmap. Des régions complexes peuvent être créées en combinant des régions simples à l'aide de united(), intersected(), subtracted() ou xored() (exclusif ou). Vous pouvez déplacer une région à l'aide de translate().
Vous pouvez tester si une région isEmpty() ou si elle contains() a QPoint ou QRect. Le rectangle de délimitation peut être trouvé avec boundingRect().
L'itération sur la région (avec begin(), end(), ou les boucles ranged-for) donne une décomposition de la région en rectangles.
Exemple d'utilisation de régions complexes :
void MyWidget::paintEvent(QPaintEvent *) { QRegion r1(QRect(100, 100, 200, 80), // r1: elliptic region QRegion::Ellipse); QRegion r2(QRect(100, 120, 90, 30)); // r2: rectangular region QRegion r3 = r1.intersected(r2); // r3: intersection QPainter painter(this); painter.setClipRegion(r3); // ... // paint clipped graphics }
Voir également QPainter::setClipRegion(), QPainter::setClipRect() et QPainterPath.
Documentation sur les types de membres
enum QRegion::RegionType
Spécifie la forme de la région à créer.
| Constante | Valeur | Description |
|---|---|---|
QRegion::Rectangle | 0 | la région couvre la totalité du rectangle. |
QRegion::Ellipse | 1 | la région est une ellipse à l'intérieur du rectangle. |
QRegion::const_iterator
Un itérateur sur les rectangles qui ne se chevauchent pas et qui constituent la région.
L'union de tous les rectangles est égale à la région originale.
QRegion ne propose pas d'itérateurs mutables.
QRegion::const_reverse_iterator
Un itérateur inversé sur les rectangles qui ne se chevauchent pas et qui constituent la région.
L'union de tous les rectangles est égale à la région originale.
QRegion ne propose pas d'itérateurs mutables.
Documentation des fonctions membres
QRegion::QRegion()
Construit une région vide.
Voir aussi isEmpty().
QRegion::QRegion(const QBitmap &bm)
Construit une région à partir de l'image bitmap bm.
La région résultante est constituée des pixels de l'image bitmap bm qui sont Qt::color1, comme si chaque pixel était un rectangle de 1 par 1.
Ce constructeur peut créer des régions complexes qui ralentiront la peinture lorsqu'il sera utilisé. Notez que le dessin de pixmaps masqués peut être effectué beaucoup plus rapidement en utilisant QPixmap::setMask().
QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
Construit une région polygonale à partir du tableau de points a avec la règle de remplissage spécifiée par fillRule.
Si fillRule est Qt::WindingFill, la région polygonale est définie à l'aide de l'algorithme d'enroulement ; si c'est Qt::OddEvenFill, l'algorithme de remplissage pair-impair est utilisé.
Attention : Ce constructeur peut être utilisé pour créer des régions complexes qui ralentiront la peinture lorsqu'elles seront utilisées.
QRegion::QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
Construit une région rectangulaire ou elliptique.
Si t est Rectangle, la région est le rectangle rempli (x, y, w, h). Si t est Ellipse, la région est l'ellipse remplie dont le centre est (x + w / 2, y + h / 2) et la taille (w,h).
QRegion::QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
Créer une région basée sur le rectangle r avec le type de région t.
Si le rectangle n'est pas valide, une région nulle sera créée.
Il s'agit d'une fonction surchargée.
Voir aussi QRegion::RegionType.
QRegion::QRegion(const QRegion &r)
Construit une nouvelle région qui est égale à la région r.
[noexcept] QRegion::QRegion(QRegion &&other)
Move-construit une nouvelle région à partir de la région other. Après l'appel, other est nul.
Voir aussi isNull().
[noexcept] QRegion::const_iterator QRegion::begin() const
Renvoie une adresse const_iterator pointant vers le début de la plage de rectangles qui ne se chevauchent pas et qui constituent la région.
L'union de tous les rectangles est égale à la région d'origine.
Voir aussi rbegin(), cbegin() et end().
[noexcept] QRect QRegion::boundingRect() const
Renvoie le rectangle de délimitation de cette région. Une région vide donne un rectangle qui est QRect::isNull().
[noexcept] QRegion::const_iterator QRegion::cbegin() const
Identique à begin().
[noexcept] QRegion::const_iterator QRegion::cend() const
Identique à end().
bool QRegion::contains(const QPoint &p) const
Renvoie true si la région contient le point p; sinon, renvoie false.
bool QRegion::contains(const QRect &r) const
Renvoie true si la région chevauche le rectangle r; sinon, renvoie false.
Il s'agit d'une fonction surchargée.
[noexcept] QRegion::const_reverse_iterator QRegion::crbegin() const
Identique à rbegin().
[noexcept] QRegion::const_reverse_iterator QRegion::crend() const
Identique à rend().
[noexcept] QRegion::const_iterator QRegion::end() const
Renvoie une adresse const_iterator pointant vers l'une des extrémités des rectangles qui ne se chevauchent pas et qui constituent la région.
L'union de tous les rectangles est égale à la région d'origine.
Voir aussi rend(), cend() et begin().
[static, since 6.0] QRegion QRegion::fromHRGN(HRGN hrgn)
Retourne un QRegion qui est équivalent au hrgn donné.
Cette fonction a été introduite dans Qt 6.0.
QRegion QRegion::intersected(const QRect &rect) const
Renvoie une région qui est l'intersection de cette région et de l'adresse rect.
Voir aussi subtracted(), united(), et xored().
QRegion QRegion::intersected(const QRegion &r) const
Renvoie une région qui est l'intersection de cette région et de r.

La figure montre l'intersection de deux régions elliptiques.
Voir aussi subtracted(), united() et xored().
bool QRegion::intersects(const QRect &rect) const
Renvoie true si cette région croise rect, sinon renvoie false.
bool QRegion::intersects(const QRegion ®ion) const
Renvoie true si cette région croise region, sinon renvoie false.
bool QRegion::isEmpty() const
Renvoie true si la région est vide, sinon renvoie false. Une région vide est une région qui ne contient aucun point.
Exemple :
QRegion r1(10, 10, 20, 20); r1.isEmpty(); // false QRegion r3; r3.isEmpty(); // true QRegion r2(40, 40, 20, 20); r3 = r1.intersected(r2); // r3: intersection of r1 and r2 r3.isEmpty(); // true r3 = r1.united(r2); // r3: union of r1 and r2 r3.isEmpty(); // false
bool QRegion::isNull() const
Renvoie true si la région est vide, sinon renvoie false. Une région vide est une région qui ne contient aucun point. Cette fonction est identique à isEmpty
Voir également isEmpty().
[noexcept] QRegion::const_reverse_iterator QRegion::rbegin() const
Renvoie une adresse const_reverse_iterator pointant vers le début de la plage de rectangles qui ne se chevauchent pas et qui constituent la région.
L'union de tous les rectangles est égale à la région d'origine.
Voir aussi begin(), crbegin() et rend().
[noexcept] int QRegion::rectCount() const
Renvoie le nombre de rectangles dont cette région est composée. Identique à end() - begin().
[noexcept, since 6.8] QSpan<const QRect> QRegion::rects() const
Renvoie une plage de rectangles ne se chevauchant pas qui composent la région. L'étendue reste valide jusqu'au prochain appel d'une méthode de mutation (non-const) sur cette région.
L'union de tous les rectangles est égale à la région d'origine.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi setRects().
[noexcept] QRegion::const_reverse_iterator QRegion::rend() const
Renvoie une adresse const_reverse_iterator pointant vers une extrémité de la plage de rectangles ne se chevauchant pas qui composent la région.
L'union de tous les rectangles est égale à la région d'origine.
Voir aussi end(), crend() et rbegin().
[since 6.8] void QRegion::setRects(QSpan<const QRect> rects)
Définit la région en utilisant le tableau de rectangles spécifié par rects. Les rectangles doivent être triés de manière optimale Y-X et respecter les restrictions suivantes :
- Les rectangles ne doivent pas se croiser.
- Tous les rectangles ayant une coordonnée supérieure donnée doivent avoir la même hauteur.
- Deux rectangles ne peuvent pas se toucher horizontalement (dans ce cas, ils doivent être combinés en un seul rectangle plus large).
- Les rectangles doivent être triés par ordre croissant, avec Y comme clé de tri principale et X comme clé de tri secondaire.
Remarque : pour des raisons historiques, rects.size() doit être inférieur à INT_MAX (voir rectCount()).
Cette fonction a été introduite dans Qt 6.8.
Voir aussi rects().
QRegion QRegion::subtracted(const QRegion &r) const
Renvoie une région qui est r soustraite de cette région.

La figure montre le résultat lorsque l'ellipse de droite est soustraite à l'ellipse de gauche (left - right).
Voir également intersected(), united() et xored().
[noexcept] void QRegion::swap(QRegion &other)
Remplace cette région par other. Cette opération est très rapide et n'échoue jamais.
[since 6.0] HRGN QRegion::toHRGN() const
Renvoie un HRGN équivalent à la région donnée.
Cette fonction a été introduite dans Qt 6.0.
void QRegion::translate(int dx, int dy)
Traduit (déplace) la région dx le long de l'axe X et dy le long de l'axe Y.
void QRegion::translate(const QPoint &point)
Traduit la région point.x() le long de l'axe des x et point.y() le long de l'axe des y, par rapport à la position actuelle. Les valeurs positives déplacent la région vers la droite et le bas.
Traduit la région vers la valeur donnée point.
Il s'agit d'une fonction surchargée.
QRegion QRegion::translated(int dx, int dy) const
Renvoie une copie de la région qui est translatée dx le long de l'axe x et dy le long de l'axe y, par rapport à la position actuelle. Les valeurs positives déplacent la région vers la droite et le bas.
Voir également translate().
QRegion QRegion::translated(const QPoint &p) const
Renvoie une copie du rectangle qui a été translaté p.x() le long de l'axe des x et p.y() le long de l'axe des y, par rapport à la position actuelle. Les valeurs positives déplacent le rectangle vers la droite et le bas.
Il s'agit d'une fonction surchargée.
Voir également translate().
QRegion QRegion::united(const QRect &rect) const
Renvoie une région qui est l'union de cette région et de la région donnée rect.
Voir aussi intersected(), subtracted(), et xored().
QRegion QRegion::united(const QRegion &r) const
Renvoie une région qui est l'union de cette région et de r.

La figure montre l'union de deux régions elliptiques.
Voir aussi intersected(), subtracted() et xored().
QRegion QRegion::xored(const QRegion &r) const
Renvoie une région qui est le ou exclusif (XOR) de cette région et de r.

La figure montre le OU exclusif de deux régions elliptiques.
Voir également intersected(), united() et subtracted().
QRegion::operator QVariant() const
Retourne la région sous forme de QVariant
bool QRegion::operator!=(const QRegion &other) const
Renvoie true si cette région est différente de la région other; sinon, renvoie false.
QRegion QRegion::operator&(const QRegion &r) const
Applique la fonction intersected() à cette région et à r. r1&r2 est équivalent à r1.intersected(r2).
Voir aussi intersected().
QRegion QRegion::operator&(const QRect &r) const
Il s'agit d'une fonction surchargée.
QRegion &QRegion::operator&=(const QRegion &r)
Applique la fonction intersected() à cette région et à r et affecte le résultat à cette région. r1&=r2 est équivalent à r1 = r1.intersected(r2).
Voir aussi intersected().
QRegion &QRegion::operator&=(const QRect &r)
Il s'agit d'une fonction surchargée.
QRegion QRegion::operator+(const QRegion &r) const
Applique la fonction united() à cette région et à r. r1+r2 est équivalent à r1.united(r2).
Voir aussi united() et operator|().
QRegion QRegion::operator+(const QRect &r) const
Il s'agit d'une fonction surchargée.
QRegion &QRegion::operator+=(const QRect &rect)
Renvoie une région qui est l'union de cette région avec la région spécifiée rect.
Voir aussi united().
QRegion &QRegion::operator+=(const QRegion &r)
Applique la fonction united() à cette région et à r et affecte le résultat à cette région. r1+=r2 est équivalent à r1 = r1.united(r2).
Voir aussi intersected().
QRegion QRegion::operator-(const QRegion &r) const
Applique la fonction subtracted() à cette région et à r. r1-r2 est équivalent à r1.subtracted(r2).
Voir aussi subtracted().
QRegion &QRegion::operator-=(const QRegion &r)
Applique la fonction subtracted() à cette région et à r et affecte le résultat à cette région. r1-=r2 est équivalent à r1 = r1.subtracted(r2).
Voir aussi subtracted().
[noexcept] QRegion &QRegion::operator=(QRegion &&other)
Move-assigne other à cette instance QRegion.
QRegion &QRegion::operator=(const QRegion &r)
Attribue r à cette région et renvoie une référence à la région.
bool QRegion::operator==(const QRegion &r) const
Renvoie true si la région est égale à r; sinon, renvoie false.
QRegion QRegion::operator^(const QRegion &r) const
Applique la fonction xored() à cette région et à r. r1^r2 est équivalent à r1.xored(r2).
Voir aussi xored().
QRegion &QRegion::operator^=(const QRegion &r)
Applique la fonction xored() à cette région et à r et affecte le résultat à cette région. r1^=r2 est équivalent à r1 = r1.xored(r2).
Voir aussi xored().
QRegion QRegion::operator|(const QRegion &r) const
Applique la fonction united() à cette région et à r. r1|r2 est équivalent à r1.united(r2).
Voir aussi united() et operator+().
QRegion &QRegion::operator|=(const QRegion &r)
Applique la fonction united() à cette région et à r et affecte le résultat à cette région. r1|=r2 est équivalent à r1 = r1.united(r2).
Voir également united().
Non-membres apparentés
QDataStream &operator<<(QDataStream &s, const QRegion &r)
Écrit la région r dans le flux s et renvoie une référence au flux.
Voir aussi Format des opérateurs QDataStream.
QDataStream &operator>>(QDataStream &s, QRegion &r)
Lit une région du flux s dans r et renvoie une référence au flux.
Voir aussi Format des opérateurs QDataStream.
© 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.