QRegion Class

Die QRegion-Klasse spezifiziert eine Clip-Region für einen Maler. Mehr...

Kopfzeile: #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
QVariant 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)

Detaillierte Beschreibung

QRegion wird zusammen mit QPainter::setClipRegion() verwendet, um den Malbereich auf die zu malenden Bereiche zu beschränken. Es gibt auch eine Funktion QWidget::repaint(), die einen QRegion-Parameter annimmt. QRegion ist das beste Werkzeug, um den Bildschirmbereich zu minimieren, der durch ein Repaint aktualisiert wird.

Diese Klasse ist nicht geeignet, um Formen für das Rendering zu konstruieren, insbesondere 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 können durch Kombination einfacher Regionen mit united(), intersected(), subtracted() oder xored() (exklusive oder) erstellt werden. Sie können eine Region mit translate() verschieben.

Sie können prüfen, ob eine Region isEmpty() oder ob sie contains() ein QPoint oder QRect ist. Das begrenzende Rechteck kann mit boundingRect() gefunden werden.

Eine Iteration über die Region (mit begin(), end() oder ranged-for-Schleifen) ergibt eine Zerlegung der Region in Rechtecke.

Beispiel für die Verwendung komplexer Regionen:

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 der Mitgliedstypen

enum QRegion::RegionType

Gibt die Form der zu erstellenden Region an.

KonstanteWertBeschreibung
QRegion::Rectangle0Der Bereich umfasst das gesamte Rechteck.
QRegion::Ellipse1der Bereich ist eine Ellipse innerhalb des Rechtecks.

QRegion::const_iterator

Ein Iterator über die sich nicht überschneidenden Rechtecke, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

QRegion bietet keine veränderbaren Iteratoren.

Siehe auch begin() und end().

QRegion::const_reverse_iterator

Ein umgekehrter Iterator über die sich nicht überschneidenden Rechtecke, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

QRegion bietet keine veränderbaren Iteratoren.

Siehe auch rbegin() und rend().

Dokumentation der Mitgliedsfunktionen

QRegion::QRegion()

Konstruiert eine leere Region.

Siehe auch isEmpty().

QRegion::QRegion(const QBitmap &bm)

Konstruiert eine Region aus der Bitmap bm.

Die resultierende Region besteht aus den Pixeln der Bitmap bm, die Qt::color1 sind, als ob jedes Pixel ein 1 x 1-Rechteck wäre.

Dieser Konstruktor kann komplexe Regionen erzeugen, die das Malen verlangsamen. Beachten Sie, dass das Zeichnen von maskierten Pixmaps mit QPixmap::setMask() viel schneller geht.

QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)

Konstruiert eine Polygonregion aus dem Punktfeld a mit der durch fillRule angegebenen Füllregel.

Wenn fillRule gleich Qt::WindingFill ist, wird die Polygonregion mit dem Wickelalgorithmus definiert; wenn sie gleich Qt::OddEvenFill ist, wird der Algorithmus für ungerade und gerade Füllungen verwendet.

Warnung: Dieser Konstruktor kann verwendet werden, um komplexe Regionen zu erstellen, die das Malen verlangsamen.

QRegion::QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)

Konstruiert einen rechteckigen oder elliptischen Bereich.

Wenn t gleich Rectangle ist, ist die Region das gefüllte Rechteck (x, y, w, h). Wenn t gleich Ellipse ist, ist die Region die gefüllte Ellipse mit Mittelpunkt bei (x + w / 2, y + h / 2) und Größe (w,h).

QRegion::QRegion(const QRect &r, QRegion::RegionType t = Rectangle)

Dies ist eine überladene Funktion.

Erstellt eine Region basierend auf dem Rechteck r mit dem Regionstyp t.

Wenn das Rechteck ungültig ist, wird eine Null-Region erstellt.

Siehe auch QRegion::RegionType.

QRegion::QRegion(const QRegion &r)

Konstruiert eine neue Region, die gleich der Region r ist.

[noexcept] QRegion::QRegion(QRegion &&other)

Move-konstruiert eine neue Region aus der Region other. Nach dem Aufruf ist other null.

Siehe auch isNull().

[noexcept] QRegion::const_iterator QRegion::begin() const

Gibt eine const_iterator zurück, die auf den Anfang des Bereichs der sich nicht überlappenden Rechtecke zeigt, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

Siehe auch rbegin(), cbegin(), und end().

[noexcept] QRect QRegion::boundingRect() const

Gibt das begrenzende Rechteck dieser Region zurück. Ein leerer Bereich ergibt ein Rechteck, das QRect::isNull() ist.

[noexcept] QRegion::const_iterator QRegion::cbegin() const

Dasselbe wie begin().

[noexcept] QRegion::const_iterator QRegion::cend() const

Dasselbe wie 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

Dies ist eine überladene Funktion.

Gibt true zurück, wenn die Region das Rechteck r überlappt; andernfalls false.

[noexcept] QRegion::const_reverse_iterator QRegion::crbegin() const

Dasselbe wie rbegin().

[noexcept] QRegion::const_reverse_iterator QRegion::crend() const

Dasselbe wie rend().

[noexcept] QRegion::const_iterator QRegion::end() const

Gibt ein const_iterator zurück, das auf ein Ende hinter dem Ende der nicht überlappenden Rechtecke zeigt, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

Siehe auch rend(), cend(), und begin().

[static, since 6.0] QRegion QRegion::fromHRGN(HRGN hrgn)

Gibt eine QRegion zurück, die der 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 aus dieser Region und der angegebenen rect ist.

Siehe auch subtracted(), united(), und xored().

QRegion QRegion::intersected(const QRegion &r) const

Gibt eine Region zurück, die die Schnittmenge dieser Region und r ist.

Region Intersection

Die Abbildung zeigt die Überschneidung zweier elliptischer Regionen.

Siehe auch subtracted(), united(), und xored().

bool QRegion::intersects(const QRect &rect) const

Gibt true zurück, wenn sich diese Region mit rect schneidet, andernfalls false.

bool QRegion::intersects(const QRegion &region) const

Gibt true zurück, wenn sich diese Region mit region schneidet, andernfalls false.

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 ist identisch mit isEmpty

Siehe auch isEmpty().

[noexcept] QRegion::const_reverse_iterator QRegion::rbegin() const

Gibt eine const_reverse_iterator zurück, die auf den Anfang des Bereichs der sich nicht überlappenden Rechtecke zeigt, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

Siehe auch begin(), crbegin(), und rend().

[noexcept] int QRegion::rectCount() const

Gibt die Anzahl der Rechtecke zurück, aus denen diese Region besteht. Dasselbe wie end() - begin().

[noexcept, since 6.8] QSpan<const QRect> QRegion::rects() const

Gibt eine Spanne von sich nicht überlappenden Rechtecken zurück, aus denen die Region besteht. Die Spanne bleibt bis zum nächsten Aufruf einer mutierenden (nicht-konstanten) Methode auf dieser Region gültig.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

Hinweis: Diese Funktion existierte auch in Qt 5, gab aber 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 Stelle hinter dem Ende des Bereichs nicht überlappender Rechtecke zeigt, aus denen die Region besteht.

Die Vereinigung aller Rechtecke ist gleich der ursprünglichen Region.

Siehe auch end(), crend(), und rbegin().

[since 6.8] void QRegion::setRects(QSpan<const QRect> rects)

Legt den Bereich mit Hilfe des durch rects angegebenen Arrays von Rechtecken fest. Die Rechtecke müssen optimal Y-X sortiert sein und die folgenden Einschränkungen erfüllen:

  • Die Rechtecke dürfen sich nicht überschneiden.
  • Alle Rechtecke mit einer bestimmten oberen Koordinate müssen die gleiche Höhe haben.
  • Es dürfen keine zwei Rechtecke horizontal aneinander stoßen (in diesem Fall sollten sie zu einem einzigen breiteren Rechteck zusammengefasst werden).
  • Die Rechtecke müssen in aufsteigender Reihenfolge sortiert sein, wobei Y der Hauptsortierschlüssel und X der Nebensortierschlüssel ist.

Hinweis: Aus historischen Gründen muss rects.size() kleiner als INT_MAX sein (siehe rectCount()).

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch rects().

QRegion QRegion::subtracted(const QRegion &r) const

Gibt einen Bereich zurück, der r von diesem Bereich subtrahiert wird.

Region Subtraction

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 mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

[since 6.0] HRGN QRegion::toHRGN() const

Gibt eine HRGN zurück, die 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)

Dies ist eine überladene Funktion.

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

Verschiebt den Bereich an die angegebene point.

QRegion QRegion::translated(int dx, int dy) const

Gibt eine Kopie des Bereichs zurück, die relativ zur aktuellen Position um dx entlang der x-Achse und dy entlang der y-Achse verschoben wird. Positive Werte verschieben den Bereich nach rechts und unten.

Siehe auch translate().

QRegion QRegion::translated(const QPoint &p) const

Dies ist eine überladene Funktion.

Gibt eine Kopie des Rechtecks zurück, die p.x() entlang der x-Achse und p.y() entlang der y-Achse relativ zur aktuellen Position verschoben wird. Positive Werte verschieben das Rechteck nach rechts und unten.

Siehe auch translate().

QRegion QRegion::united(const QRect &rect) const

Gibt eine Region zurück, die die Vereinigung dieser Region und der angegebenen rect ist.

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 von zwei elliptischen Regionen.

Siehe auch intersected(), subtracted(), und xored().

QRegion QRegion::xored(const QRegion &r) const

Gibt eine Region zurück, die das exklusive oder (XOR) von dieser Region und r ist.

Region XORed

Die Abbildung zeigt das exklusive oder von zwei elliptischen Regionen.

Siehe auch intersected(), united(), und subtracted().

QVariant 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 diese Region und r an. r1&r2 ist gleichbedeutend mit 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 diese Region und r an und weist das Ergebnis dieser Region zu. r1&=r2 ist äquivalent zu 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 diese Region und r an. r1+r2 ist äquivalent zu 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 rect ist.

Siehe auch united().

QRegion &QRegion::operator+=(const QRegion &r)

Wendet die Funktion united() auf diese Region und r an und weist das Ergebnis dieser Region zu. r1+=r2 ist äquivalent zu r1 = r1.united(r2).

Siehe auch intersected().

QRegion QRegion::operator-(const QRegion &r) const

Wendet die Funktion subtracted() auf diese Region und r an. r1-r2 ist gleichbedeutend mit r1.subtracted(r2).

Siehe auch subtracted().

QRegion &QRegion::operator-=(const QRegion &r)

Wendet die Funktion subtracted() auf diese Region und r an und weist das Ergebnis dieser Region zu. r1-=r2 ist äquivalent zu r1 = r1.subtracted(r2).

Siehe auch subtracted().

[noexcept] QRegion &QRegion::operator=(QRegion &&other)

Verschieben - 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 gleich r ist; andernfalls wird false zurückgegeben.

QRegion QRegion::operator^(const QRegion &r) const

Wendet die Funktion xored() auf diese Region und r an. r1^r2 ist äquivalent zu r1.xored(r2).

Siehe auch xored().

QRegion &QRegion::operator^=(const QRegion &r)

Wendet die Funktion xored() auf diese Region und r an und weist das Ergebnis dieser Region zu. r1^=r2 ist äquivalent zu r1 = r1.xored(r2).

Siehe auch xored().

QRegion QRegion::operator|(const QRegion &r) const

Wendet die Funktion united() auf diese Region und r an. r1|r2 ist äquivalent zu r1.united(r2).

Siehe auch united() und operator+().

QRegion &QRegion::operator|=(const QRegion &r)

Wendet die Funktion united() auf diese Region und r an und weist das Ergebnis dieser Region zu. r1|=r2 ist äquivalent zu r1 = r1.united(r2).

Siehe auch united().

Verwandte Nicht-Mitglieder

QDataStream &operator<<(QDataStream &s, const QRegion &r)

Schreibt die Region 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 und gibt eine Referenz auf den Stream zurück.

Siehe auch Format der QDataStream-Operatoren.

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