QRegion Class
Die Klasse „QRegion“ legt einen Ausschnittbereich für einen „Painter“ fest. Mehr...
| Header: | #include <QRegion> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QRegion gehört zu den Mal-Klassen und den implizit gemeinsam genutzten Klassen.
Öffentliche Typen
| enum | RegionType { Rectangle, Ellipse } |
| const_iterator | |
| const_reverse_iterator |
Öffentliche Funktionen
| 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) |
Statische öffentliche Mitglieder
(since 6.0) QRegion | fromHRGN(HRGN hrgn) |
Verwandte Nicht-Mitglieder
| QDataStream & | operator<<(QDataStream &s, const QRegion &r) |
| QDataStream & | operator>>(QDataStream &s, QRegion &r) |
Ausführliche Beschreibung
QRegion wird zusammen mit ` QPainter::setClipRegion()` verwendet, um den Zeichenbereich auf die tatsächlich zu zeichnenden Bereiche zu beschränken. Es gibt auch eine Funktion ` QWidget::repaint()`, die einen QRegion-Parameter akzeptiert. QRegion ist das beste Werkzeug, um den bei einem Neuzurzeichnen zu aktualisierenden Bildschirmbereich zu minimieren.
Diese Klasse eignet sich nicht zum Erstellen von Formen für die Darstellung, insbesondere nicht als Umrisse. Verwenden Sie ` QPainterPath `, um Pfade und Formen für die Verwendung mit ` QPainter` zu erstellen.
QRegion ist eine implizit gemeinsam genutzte Klasse.
Erstellen und Verwenden von Regionen
Eine Region kann aus einem Rechteck, einer Ellipse, einem Polygon oder einer Bitmap erstellt werden. Komplexe Regionen lassen sich durch die Kombination einfacher Regionen mit den Funktionen „ united()“, „ intersected()“, „ subtracted()“ oder „ xored()“ (exklusives Oder) erstellen. Sie können eine Region mit der Funktion „ translate()“ verschieben.
Sie können prüfen, ob eine Region isEmpty() ist oder ob sie contains() ein QPoint oder QRect ist. Das Begrenzungsrechteck lässt sich mit boundingRect() ermitteln.
Eine Iteration über den Bereich (mit begin(), end() oder for-Loops mit Bereichsangabe) liefert eine Zerlegung des Bereichs in Rechtecke.
Beispiel für die Verwendung komplexer Bereiche:
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
}Siehe auch QPainter::setClipRegion(), QPainter::setClipRect() und QPainterPath.
Dokumentation zu Mitgliedstypen
enum QRegion::RegionType
Legt die Form des zu erstellenden Bereichs fest.
| Konstante | Wert | Beschreibung |
|---|---|---|
QRegion::Rectangle | 0 | Der Bereich deckt das gesamte Rechteck ab. |
QRegion::Ellipse | 1 | Der Bereich ist eine Ellipse innerhalb des Rechtecks. |
QRegion::const_iterator
Ein Iterator über die sich nicht überlappenden Rechtecke, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht dem ursprünglichen Bereich.
QRegion bietet keine veränderbare Iteratoren an.
QRegion::const_reverse_iterator
Ein Rückwärtsiterator über die sich nicht überlappenden Rechtecke, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht der ursprünglichen Region.
QRegion bietet keine veränderbare Iteratoren.
Dokumentation der Member-Funktionen
QRegion::QRegion()
Erstellt einen leeren Bereich.
Siehe auch „ isEmpty()“.
QRegion::QRegion(const QBitmap &bm)
Erstellt einen Bereich aus der Bitmap bm.
Der resultierende Bereich besteht aus den Pixeln in der Bitmap „ bm “, die „ Qt::color1 “ sind, so als wäre jedes Pixel ein 1×1-Rechteck.
Dieser Konstruktor kann komplexe Bereiche erzeugen, die bei der Verwendung das Zeichnen verlangsamen. Beachten Sie, dass das Zeichnen maskierter Pixmaps mit ` QPixmap::setMask()` wesentlich schneller erfolgen kann.
QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
Erstellt eine Polygonregion aus dem Punktarray ` a ` mit der durch ` fillRule` festgelegten Füllregel.
Ist fillRule gleich Qt::WindingFill, wird die Polygonregion mithilfe des Winding-Algorithmus definiert; ist es Qt::OddEvenFill, kommt der Odd-Even-Füllalgorithmus zum Einsatz.
Warnung: Dieser Konstruktor kann zum Erstellen komplexer Bereiche verwendet werden, die bei der Verwendung das Zeichnen verlangsamen.
QRegion::QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
Erstellt einen rechteckigen oder elliptischen Bereich.
Ist ` t ` gleich ` Rectangle`, so ist die Region das gefüllte Rechteck (x, y, w, h). Ist ` t ` gleich ` Ellipse`, so ist die Region die gefüllte Ellipse mit dem Mittelpunkt (x + w /2, y + h /2) und der Größe (w,h).
QRegion::QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
Erstellen Sie eine Region auf der Grundlage des Rechtecks r mit dem Regionstyp t.
Ist das Rechteck ungültig, wird eine Null-Region erstellt.
Dies ist eine überladene Funktion.
Siehe auch QRegion::RegionType.
QRegion::QRegion(const QRegion &r)
Erstellt eine neue Region, die mit der Region „ r “ identisch ist.
[noexcept] QRegion::QRegion(QRegion &&other)
Erstellt eine neue Region aus der Region „ other “. Nach dem Aufruf ist „ other “ null.
Siehe auch ` isNull()`.
[noexcept] QRegion::const_iterator QRegion::begin() const
Gibt ein ` const_iterator ` zurück, das auf den Anfang des Bereichs der sich nicht überlappenden Rechtecke verweist, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht der ursprünglichen Region.
Siehe auch „ rbegin()“, „ cbegin()“ und „ end()“.
[noexcept] QRect QRegion::boundingRect() const
Gibt das Begrenzungsrechteck dieses Bereichs zurück. Bei einem leeren Bereich wird ein Rechteck zurückgegeben, das der Funktion „ QRect::isNull()“ entspricht.
[noexcept] QRegion::const_iterator QRegion::cbegin() const
Entspricht „ begin()“.
[noexcept] QRegion::const_iterator QRegion::cend() const
Entspricht „ end()“.
bool QRegion::contains(const QPoint &p) const
Gibt „ true “ zurück, wenn die Region den Punkt „ p “ enthält; andernfalls wird „ false “ zurückgegeben.
bool QRegion::contains(const QRect &r) const
Gibt „ true “ zurück, wenn sich die Region mit dem Rechteck „ r “ überschneidet; andernfalls wird „ false “ zurückgegeben.
Dies ist eine überladene Funktion.
[noexcept] QRegion::const_reverse_iterator QRegion::crbegin() const
Entspricht „ rbegin()“.
[noexcept] QRegion::const_reverse_iterator QRegion::crend() const
Entspricht „ rend()“.
[noexcept] QRegion::const_iterator QRegion::end() const
Gibt einen ` const_iterator ` zurück, der auf eine Position verweist, die um einen Schritt über das Ende der sich nicht überlappenden Rechtecke hinausgeht, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht dem ursprünglichen Bereich.
Siehe auch „ rend()“, „ cend()“ und „ begin()“.
[static, since 6.0] QRegion QRegion::fromHRGN(HRGN hrgn)
Gibt ein ` QRegion ` zurück, das dem angegebenen ` hrgn` entspricht.
Diese Funktion wurde in Qt 6.0 eingeführt.
QRegion QRegion::intersected(const QRect &rect) const
Gibt eine Region zurück, die die Schnittmenge dieser Region und der angegebenen Region rect bildet.
Siehe auch subtracted(), united() und xored().
QRegion QRegion::intersected(const QRegion &r) const
Gibt eine Region zurück, die der Schnittmenge dieser Region und r entspricht.

Die Abbildung zeigt die Schnittmenge zweier elliptischer Bereiche.
Siehe auch subtracted(), united() und xored().
bool QRegion::intersects(const QRect &rect) const
Gibt „ true “ zurück, wenn sich diese Region mit „ rect “ überschneidet; andernfalls wird „ false “ zurückgegeben.
bool QRegion::intersects(const QRegion ®ion) const
Gibt „ true “ zurück, wenn sich diese Region mit „ region “ überschneidet; andernfalls wird „ false “ zurückgegeben.
bool QRegion::isEmpty() const
Gibt „ true “ zurück, wenn die Region leer ist; andernfalls wird „ false “ zurückgegeben. Eine leere Region ist eine Region, die keine Punkte enthält.
Beispiel:
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(); // falsebool QRegion::isNull() const
Gibt „ true “ zurück, wenn die Region leer ist; andernfalls wird „ false “ zurückgegeben. Eine leere Region ist eine Region, die keine Punkte enthält. Diese Funktion entspricht isEmpty
Siehe auch isEmpty().
[noexcept] QRegion::const_reverse_iterator QRegion::rbegin() const
Gibt einen ` const_reverse_iterator ` zurück, der auf den Anfang des Bereichs der sich nicht überlappenden Rechtecke verweist, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht der ursprünglichen Region.
Siehe auch „ begin()“, „ crbegin()“ und „ rend()“.
[noexcept] int QRegion::rectCount() const
Gibt die Anzahl der Rechtecke zurück, aus denen sich dieser Bereich zusammensetzt. Entspricht „ end() - begin() “.
[noexcept, since 6.8] QSpan<const QRect> QRegion::rects() const
Gibt eine Spanne aus sich nicht überlappenden Rechtecken zurück, aus denen sich die Region zusammensetzt. Die Spanne bleibt bis zum nächsten Aufruf einer mutierenden (nicht-konstanten) Methode für diese Region gültig.
Die Vereinigung aller Rechtecke entspricht dem ursprünglichen Bereich.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch setRects().
[noexcept] QRegion::const_reverse_iterator QRegion::rend() const
Gibt ein ` const_reverse_iterator ` zurück, das auf eine Position zeigt, die um einen Schritt über das Ende des Bereichs der sich nicht überlappenden Rechtecke hinausgeht, aus denen sich die Region zusammensetzt.
Die Vereinigung aller Rechtecke entspricht der ursprünglichen Region.
Siehe auch „ end()“, „ crend()“ und „ rbegin()“.
[since 6.8] void QRegion::setRects(QSpan<const QRect> rects)
Legt den Bereich anhand des durch ` rects` angegebenen Arrays von Rechtecken fest. Die Rechtecke müssen optimal nach Y-X sortiert sein und folgende Einschränkungen erfüllen:
- Die Rechtecke dürfen sich nicht überschneiden.
- Alle Rechtecke mit einer bestimmten oberen Koordinate müssen dieselbe Höhe haben.
- Keine zwei Rechtecke dürfen horizontal aneinandergrenzen (in diesem Fall sollten sie zu einem einzigen breiteren Rechteck zusammengefasst werden).
- Die Rechtecke müssen in aufsteigender Reihenfolge sortiert sein, wobei Y als Hauptsortierschlüssel und X als Nebensortierschlüssel dient.
Hinweis: Aus historischen Gründen muss „ rects.size() “ kleiner sein als „ INT_MAX “ (siehe rectCount()).
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch rects().
QRegion QRegion::subtracted(const QRegion &r) const
Gibt eine Region zurück, die sich aus der Subtraktion der Ellipse auf der linken Seite von der Ellipse auf der rechten Seite ergibt ( r ).

Die Abbildung zeigt das Ergebnis, wenn die Ellipse auf der rechten Seite von der Ellipse auf der linken Seite subtrahiert wird (left - right).
Siehe auch intersected(), united() und xored().
[noexcept] void QRegion::swap(QRegion &other)
Tauscht diese Region gegen „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
[since 6.0] HRGN QRegion::toHRGN() const
Gibt ein HRGN zurück, das der angegebenen Region entspricht.
Diese Funktion wurde in Qt 6.0 eingeführt.
void QRegion::translate(int dx, int dy)
Verschiebt den Bereich „ dx “ entlang der X-Achse und „ dy “ entlang der Y-Achse.
void QRegion::translate(const QPoint &point)
Verschiebt den Bereich „ point.x()“ entlang der x-Achse und „ point.y()“ entlang der y-Achse relativ zur aktuellen Position. Positive Werte verschieben den Bereich nach rechts und nach unten.
Verschiebt den Bereich an die angegebene Position point.
Dies ist eine überladene Funktion.
QRegion QRegion::translated(int dx, int dy) const
Gibt eine Kopie des Bereichs zurück, der relativ zur aktuellen Position um die Werte dx entlang der x-Achse und dy entlang der y-Achse verschoben wurde. Positive Werte verschieben den Bereich nach rechts und nach unten.
Siehe auch translate().
QRegion QRegion::translated(const QPoint &p) const
Gibt eine Kopie des Rechtecks zurück, das relativ zur aktuellen Position um p.x() entlang der x-Achse und um p.y() entlang der y-Achse verschoben wurde. Positive Werte verschieben das Rechteck nach rechts und nach unten.
Dies ist eine überladene Funktion.
Siehe auch ` translate()`.
QRegion QRegion::united(const QRect &rect) const
Gibt eine Region zurück, die die Vereinigung dieser Region und der angegebenen rect darstellt.
Siehe auch „ intersected()“, „ subtracted()“ und „ xored()“.
QRegion QRegion::united(const QRegion &r) const
Gibt eine Region zurück, die die Vereinigung dieser Region und r ist.

Die Abbildung zeigt die Vereinigung zweier elliptischer Bereiche.
Siehe auch intersected(), subtracted() und xored().
QRegion QRegion::xored(const QRegion &r) const
Gibt eine Region zurück, die dem Exklusiv-Oder (XOR) dieser Region und r entspricht.

Die Abbildung zeigt das Exklusiv-Oder zweier elliptischer Bereiche.
Siehe auch ` intersected()`, ` united()` und ` subtracted()`.
QRegion::operator QVariant() const
Gibt die Region als QVariant
bool QRegion::operator!=(const QRegion &other) const
Gibt „ true “ zurück, wenn sich diese Region von der Region „ other “ unterscheidet; andernfalls wird „ false “ zurückgegeben.
QRegion QRegion::operator&(const QRegion &r) const
Wendet die Funktion „ intersected()“ auf diesen Bereich an und „ r “. „ r1&r2 “ entspricht „ r1.intersected(r2) “.
Siehe auch intersected().
QRegion QRegion::operator&(const QRect &r) const
Dies ist eine überladene Funktion.
QRegion &QRegion::operator&=(const QRegion &r)
Wendet die Funktion „ intersected()“ auf diesen Bereich an und führt „ r “ aus, wobei das Ergebnis diesem Bereich zugewiesen wird. „ r1&=r2 “ entspricht „ r1 = r1.intersected(r2)“.
Siehe auch intersected().
QRegion &QRegion::operator&=(const QRect &r)
Dies ist eine überladene Funktion.
QRegion QRegion::operator+(const QRegion &r) const
Wendet die Funktion „ united()“ auf diesen Bereich an und „ r “. „ r1+r2 “ entspricht „ r1.united(r2) “.
Siehe auch „ united()“ und „ operator|()“.
QRegion QRegion::operator+(const QRect &r) const
Dies ist eine überladene Funktion.
QRegion &QRegion::operator+=(const QRect &rect)
Gibt eine Region zurück, die die Vereinigung dieser Region mit der angegebenen Region ` rect` darstellt.
Siehe auch ` united()`.
QRegion &QRegion::operator+=(const QRegion &r)
Wendet die Funktion „ united()“ auf diesen Bereich an und „ r “ und weist das Ergebnis diesem Bereich zu. „ r1+=r2 “ entspricht „ r1 = r1.united(r2) “.
Siehe auch intersected().
QRegion QRegion::operator-(const QRegion &r) const
Wendet die Funktion „ subtracted()“ auf diesen Bereich an und „ r “. „ r1-r2 “ entspricht „ r1.subtracted(r2) “.
Siehe auch subtracted().
QRegion &QRegion::operator-=(const QRegion &r)
Wendet die Funktion „ subtracted()“ auf diesen Bereich an und „ r “ und weist das Ergebnis diesem Bereich zu. „ r1-=r2 “ entspricht „ r1 = r1.subtracted(r2) “.
Siehe auch subtracted().
[noexcept] QRegion &QRegion::operator=(QRegion &&other)
Weist „ other “ dieser „ QRegion “-Instanz zu.
QRegion &QRegion::operator=(const QRegion &r)
Weist dieser Region „ r “ zu und gibt einen Verweis auf die Region zurück.
bool QRegion::operator==(const QRegion &r) const
Gibt „ true “ zurück, wenn die Region mit „ r “ übereinstimmt; andernfalls wird „false“ zurückgegeben.
QRegion QRegion::operator^(const QRegion &r) const
Wendet die Funktion „ xored()“ auf diesen Bereich an und r. „ r1^r2 “ entspricht „ r1.xored(r2) “.
Siehe auch xored().
QRegion &QRegion::operator^=(const QRegion &r)
Wendet die Funktion „ xored()“ auf diesen Bereich an und „ r “ und weist das Ergebnis diesem Bereich zu. „ r1^=r2 “ entspricht „ r1 = r1.xored(r2) “.
Siehe auch „ xored()“.
QRegion QRegion::operator|(const QRegion &r) const
Wendet die Funktion „ united()“ auf diesen Bereich an und „ r “. „ r1|r2 “ entspricht „ r1.united(r2) “.
Siehe auch „ united()“ und „ operator+()“.
QRegion &QRegion::operator|=(const QRegion &r)
Wendet die Funktion „ united()“ auf diesen Bereich an und „ r “ und weist das Ergebnis diesem Bereich zu. „ r1|=r2 “ entspricht „ r1 = r1.united(r2) “.
Siehe auch united().
Verwandte Nicht-Mitglieder
QDataStream &operator<<(QDataStream &s, const QRegion &r)
Schreibt den Bereich r in den Stream s und gibt eine Referenz auf den Stream zurück.
Siehe auch Format der QDataStream-Operatoren.
QDataStream &operator>>(QDataStream &s, QRegion &r)
Liest einen Bereich aus dem Stream „ s “ in „ r “ ein und gibt eine Referenz auf den Stream zurück.
Siehe auch „Format der QDataStream-Operatoren“.
© 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.