Auf dieser Seite

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

Ö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 &region) 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)
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.

KonstanteWertBeschreibung
QRegion::Rectangle0Der Bereich deckt das gesamte Rechteck ab.
QRegion::Ellipse1Der 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.

Siehe auch begin() und end().

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.

Siehe auch rbegin() und rend().

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.

Region Schnittpunkt

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 &region) 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();               // false

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

Hinweis: Diese Funktion gab es bereits in Qt 5, gab jedoch stattdessen „ QVector “ <QRect> zurück.

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

Subtraktion von Regionen

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.

Region Union

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.

Region XORed

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.