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 |
- Liste aller Mitglieder, einschließlich vererbter Mitglieder
- Abgelehnte Mitglieder
- QRegion ist Teil der Klassen Painting Classes und Implicitly Shared Classes.
Ö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 |
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) |
Verwandte Nicht-Mitglieder
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.
Konstante | Wert | Beschreibung |
---|---|---|
QRegion::Rectangle | 0 | Der Bereich umfasst das gesamte Rechteck. |
QRegion::Ellipse | 1 | der 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.
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.
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.
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 ®ion) 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.
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.
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.
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.
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.