QPen Class

Die QPen-Klasse definiert, wie ein QPainter Linien und Umrisse von Formen zeichnen soll. Mehr...

Kopfzeile: #include <QPen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Öffentliche Funktionen

QPen()
QPen(Qt::PenStyle style)
QPen(const QColor &color)
QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
QPen(const QPen &pen)
QPen(QPen &&pen)
~QPen()
QBrush brush() const
Qt::PenCapStyle capStyle() const
QColor color() const
qreal dashOffset() const
QList<qreal> dashPattern() const
bool isCosmetic() const
bool isSolid() const
Qt::PenJoinStyle joinStyle() const
qreal miterLimit() const
void setBrush(const QBrush &brush)
void setCapStyle(Qt::PenCapStyle style)
void setColor(const QColor &color)
void setCosmetic(bool cosmetic)
void setDashOffset(qreal offset)
void setDashPattern(const QList<qreal> &pattern)
void setJoinStyle(Qt::PenJoinStyle style)
void setMiterLimit(qreal limit)
void setStyle(Qt::PenStyle style)
void setWidth(int width)
void setWidthF(qreal width)
Qt::PenStyle style() const
void swap(QPen &other)
int width() const
qreal widthF() const
QVariant operator QVariant() const
bool operator!=(const QPen &pen) const
QPen &operator=(QPen &&other)
QPen &operator=(const QPen &pen)
bool operator==(const QPen &pen) const
QDataStream &operator<<(QDataStream &stream, const QPen &pen)
QDataStream &operator>>(QDataStream &stream, QPen &pen)

Detaillierte Beschreibung

Ein Stift hat eine style(), width(), brush(), capStyle() und joinStyle().

Der Stiftstil definiert den Linientyp. Der Pinsel wird verwendet, um mit dem Stift erzeugte Striche zu füllen. Verwenden Sie die Klasse QBrush, um Füllstile festzulegen. Der Kappenstil bestimmt die Linienendkappen, die mit QPainter gezeichnet werden können, während der Verbindungsstil beschreibt, wie Verbindungen zwischen zwei Linien gezeichnet werden. Die Stiftbreite kann sowohl in Ganzzahl- (width()) als auch in Fließkomma- (widthF()) Präzision angegeben werden. Eine Linienbreite von Null bedeutet einen kosmetischen Stift. Das bedeutet, dass die Stiftbreite immer ein Pixel breit gezeichnet wird, unabhängig von der auf dem Painter eingestellten transformation.

Die verschiedenen Einstellungen können mit den entsprechenden Funktionen setStyle(), setWidth(), setBrush(), setCapStyle() und setJoinStyle() leicht geändert werden (beachten Sie, dass der Stift des Malers zurückgesetzt werden muss, wenn Sie die Stifteigenschaften ändern).

Ein Beispiel:

QPainter painter(this);
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);

Das ist gleichbedeutend mit

QPainter painter(this);
QPen pen;  // creates a default pen

pen.setStyle(Qt::DashDotLine);
pen.setWidth(3);
pen.setBrush(Qt::green);
pen.setCapStyle(Qt::RoundCap);
pen.setJoinStyle(Qt::RoundJoin);

painter.setPen(pen);

Der Standardstift ist ein schwarzer Pinsel mit einer Breite von 1, einer quadratischen Kappe (Qt::SquareCap) und einer schrägen Verbindung (Qt::BevelJoin).

Zusätzlich bietet QPen die Komfortfunktionen color() und setColor(), um die Farbe des Stiftes zu extrahieren bzw. zu setzen. Stifte können auch verglichen und gestreamt werden.

Weitere Informationen über das Malen im Allgemeinen finden Sie in der Dokumentation zum Paint System.

Stift-Stil

Qt bietet mehrere eingebaute Stile, die durch das Qt::PenStyle enum repräsentiert werden:

Verwenden Sie einfach die Funktion setStyle(), um den Stiftstil in einen der eingebauten Stile zu konvertieren, mit Ausnahme des Stils Qt::CustomDashLine, auf den wir gleich zurückkommen werden. Das Setzen des Stils auf Qt::NoPen weist den Painter an, keine Linien oder Umrisse zu zeichnen. Der Standard-Stiftstil ist Qt::SolidLine.

Seit Qt 4.1 ist es auch möglich, ein benutzerdefiniertes Strichmuster zu spezifizieren, indem man die Funktion setDashPattern() verwendet, die den Stil des Stifts implizit in Qt::CustomDashLine konvertiert. Das Musterargument, ein QList, muss als eine gerade Anzahl von qreal Einträgen angegeben werden, wobei die Einträge 1, 3, 5... die Striche und 2, 4, 6... die Leerzeichen sind. Das oben gezeigte benutzerdefinierte Muster wird zum Beispiel mit dem folgenden Code erstellt:

QPen pen;
QList<qreal> dashes;
qreal space = 4;

dashes << 1 << space << 3 << space << 9 << space
           << 27 << space << 9 << space;

pen.setDashPattern(dashes);

Beachten Sie, dass das Strichmuster in Einheiten der Stiftbreite angegeben wird, z. B. ist ein Strich der Länge 5 bei einer Breite von 10 50 Pixel lang.

Das aktuell eingestellte Strichmuster kann mit der Funktion dashPattern() abgerufen werden. Verwenden Sie die Funktion isSolid(), um festzustellen, ob der Stift eine Volltonfüllung hat oder nicht.

Kappenstil

Der Kappenstil definiert, wie die Endpunkte von Linien mit QPainter gezeichnet werden. Der Kappenstil gilt nur für breite Linien, d.h. wenn die Breite 1 oder größer ist. Die Aufzählung Qt::PenCapStyle bietet die folgenden Stile:

Der Stil Qt::SquareCap ist ein quadratisches Linienende, das den Endpunkt überdeckt und um die Hälfte der Linienbreite darüber hinausgeht. Der Stil Qt::FlatCap ist ein quadratisches Zeilenende, das den Endpunkt der Zeile nicht abdeckt. Und der Stil Qt::RoundCap ist ein abgerundetes Linienende, das den Endpunkt bedeckt.

Die Standardeinstellung ist Qt::SquareCap.

Ob Endpunkte gezeichnet werden, wenn die Stiftbreite 0 oder 1 beträgt, hängt von der Kappenart ab. Bei Verwendung von Qt::SquareCap oder Qt::RoundCap werden sie gezeichnet, bei Qt::FlatCap werden sie nicht gezeichnet.

Verbindungsstil

Der Verbindungsstil definiert, wie Verbindungen zwischen zwei verbundenen Linien mit QPainter gezeichnet werden können. Der Verbindungsstil gilt nur für breite Linien, d. h. wenn die Breite 1 oder größer ist. Die Aufzählung Qt::PenJoinStyle bietet die folgenden Stile:

Der Stil Qt::BevelJoin füllt die dreieckige Kerbe zwischen den beiden Linien aus. Der Stil Qt::MiterJoin erweitert die Linien so, dass sie sich in einem Winkel treffen. Und der Stil Qt::RoundJoin füllt einen Kreisbogen zwischen den beiden Linien aus.

Die Standardeinstellung ist Qt::BevelJoin.

Wenn der Stil Qt::MiterJoin angewendet wird, kann mit der Funktion setMiterLimit() angegeben werden, wie weit die Gehrungsverbindung vom Verbindungspunkt aus reichen kann. Die Funktion miterLimit() wird verwendet, um Artefakte zwischen Linienverbindungen zu reduzieren, wenn die Linien nahezu parallel sind.

Die miterLimit() muss in Einheiten der Stiftbreite angegeben werden, z. B. ist eine Gehrungsgrenze von 5 bei einer Breite von 10 50 Pixel lang. Die Standardgehrungsgrenze ist 2, d. h. das Doppelte der Stiftbreite in Pixeln.

Das Path Stroking Beispiel

Das Path Stroking Beispiel zeigt die in Qt eingebauten Dash Patterns und wie eigene Patterns verwendet werden können, um die Palette der verfügbaren Patterns zu erweitern.

Siehe auch QPainter, QBrush, Path Stroking Example, und Scribble Example.

Dokumentation der Mitgliedsfunktionen

QPen::QPen()

Konstruiert einen schwarzen Standard-Volltonstift mit 1 Breite.

QPen::QPen(Qt::PenStyle style)

Konstruiert einen schwarzen Stift mit 1 Breite und der angegebenen style.

Siehe auch setStyle().

QPen::QPen(const QColor &color)

Konstruiert einen einfarbigen Stift mit 1 Breite und der angegebenen color.

Siehe auch setBrush() und setColor().

QPen::QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)

Konstruiert einen Stift mit dem angegebenen brush, width, pen style, cap style und join style.

Siehe auch setBrush(), setWidth(), setStyle(), setCapStyle(), und setJoinStyle().

[noexcept] QPen::QPen(const QPen &pen)

Konstruiert einen Stift, der eine Kopie des angegebenen pen ist.

[noexcept] QPen::QPen(QPen &&pen)

Konstruiert einen Stift, der aus dem angegebenen pen verschoben wird.

Der verschobene Stift kann nur zugewiesen, kopiert oder zerstört werden. Jede andere Operation (vor der Zuweisung) führt zu undefiniertem Verhalten.

[noexcept] QPen::~QPen()

Zerstört den Stift.

QBrush QPen::brush() const

Gibt den Pinsel zurück, der zum Füllen der mit diesem Stift erzeugten Striche verwendet wird.

Siehe auch setBrush().

Qt::PenCapStyle QPen::capStyle() const

Gibt den Kappenstil des Stifts zurück.

Siehe auch setCapStyle() und Cap Style.

QColor QPen::color() const

Gibt die Farbe des Pinsels dieses Stifts zurück.

Siehe auch brush() und setColor().

qreal QPen::dashOffset() const

Gibt den Strichversatz für den Stift zurück.

Siehe auch setDashOffset().

QList<qreal> QPen::dashPattern() const

Gibt das Strichmuster dieses Stifts zurück.

Siehe auch setDashPattern(), style(), und isSolid().

bool QPen::isCosmetic() const

Gibt true zurück, wenn es sich um einen kosmetischen Stift handelt; andernfalls wird false zurückgegeben.

Kosmetische Stifte werden verwendet, um Striche zu zeichnen, die eine konstante Breite haben, unabhängig von den Transformationen, die auf die QPainter angewendet werden. Das Zeichnen einer Form mit einem kosmetischen Stift stellt sicher, dass ihr Umriss bei verschiedenen Skalierungsfaktoren die gleiche Dicke hat.

Ein Stift mit der Breite Null ist standardmäßig kosmetisch.

Siehe auch setCosmetic() und widthF().

bool QPen::isSolid() const

Gibt true zurück, wenn der Stift eine feste Füllung hat, sonst false.

Siehe auch style() und dashPattern().

Qt::PenJoinStyle QPen::joinStyle() const

Gibt den Verbindungsstil des Stifts zurück.

Siehe auch setJoinStyle() und Join Style.

qreal QPen::miterLimit() const

Gibt die Gehrungsgrenze des Stiftes zurück. Die Gehrungsgrenze ist nur relevant, wenn der Verbindungsstil auf Qt::MiterJoin eingestellt ist.

Siehe auch setMiterLimit() und Join Style.

void QPen::setBrush(const QBrush &brush)

Setzt den Pinsel, der zum Füllen der mit diesem Stift erzeugten Striche verwendet wird, auf den angegebenen brush.

Siehe auch brush() und setColor().

void QPen::setCapStyle(Qt::PenCapStyle style)

Setzt den Kappenstil des Stiftes auf den angegebenen style. Der Standardwert ist Qt::SquareCap.

Siehe auch capStyle() und Cap Style.

void QPen::setColor(const QColor &color)

Setzt die Farbe des Pinsels dieses Stifts auf die angegebene color.

Siehe auch setBrush() und color().

void QPen::setCosmetic(bool cosmetic)

Setzt diesen Stift auf kosmetisch oder nicht-kosmetisch, je nach dem Wert von cosmetic.

Siehe auch isCosmetic().

void QPen::setDashOffset(qreal offset)

Setzt den Strichversatz (den Startpunkt des Strichmusters) für diesen Stift auf die angegebene Adresse offset. Der Versatz wird in den Einheiten gemessen, die zur Angabe des Strichmusters verwendet wurden.

Beispielsweise beginnt ein Muster, bei dem jeder Strich vier Einheiten lang ist, gefolgt von einer Lücke von zwei Einheiten, mit dem Strich, wenn es als Linie gezeichnet wird.

Wenn der Strichversatz jedoch auf 4,0 eingestellt ist, beginnt jede gezeichnete Linie mit der Lücke. Werte des Versatzes bis 4,0 bewirken, dass ein Teil des Strichs zuerst gezeichnet wird, und Werte des Versatzes zwischen 4,0 und 6,0 bewirken, dass die Linie mit einem Teil der Lücke beginnt.

Hinweis: Dies wandelt implizit den Stil des Stifts in Qt::CustomDashLine um.

Siehe auch dashOffset().

void QPen::setDashPattern(const QList<qreal> &pattern)

Setzt das Strichmuster für diesen Stift auf den angegebenen pattern. Dadurch wird der Stil des Stifts implizit in Qt::CustomDashLine umgewandelt.

Das Muster muss als eine gerade Anzahl von positiven Einträgen angegeben werden, wobei die Einträge 1, 3, 5... die Striche und 2, 4, 6... die Leerzeichen sind. Ein Beispiel:

QPen pen;
QList<qreal> dashes;
qreal space = 4;
dashes << 1 << space << 3 << space << 9 << space
           << 27 << space << 9 << space;
pen.setDashPattern(dashes);

Das Strichmuster wird in Einheiten der Stiftbreite angegeben; z. B. ist ein Strich der Länge 5 bei einer Breite von 10 50 Pixel lang. Beachten Sie, dass ein Stift mit der Breite Null einem kosmetischen Stift mit einer Breite von 1 Pixel entspricht.

Jeder Strich unterliegt auch dem Kappenstil, so dass ein Strich der Länge 1 mit quadratischer Kappe in jeder Richtung 0,5 Pixel breit ist, was eine Gesamtbreite von 2 ergibt.

Beachten Sie, dass der Standard-Kappenstil Qt::SquareCap ist, was bedeutet, dass ein quadratisches Linienende den Endpunkt abdeckt und um die Hälfte der Linienbreite darüber hinausgeht.

Siehe auch setStyle(), dashPattern(), setCapStyle(), und setCosmetic().

void QPen::setJoinStyle(Qt::PenJoinStyle style)

Setzt den Verbindungsstil des Stifts auf den angegebenen style. Der Standardwert ist Qt::BevelJoin.

Siehe auch joinStyle() und Join Style.

void QPen::setMiterLimit(qreal limit)

Setzt die Gehrungsgrenze dieses Stiftes auf die angegebene limit.

Die Gehrungsgrenze beschreibt, wie weit sich eine Gehrungsverbindung vom Verbindungspunkt aus erstrecken kann. Dies wird verwendet, um Artefakte zwischen Linienverbindungen zu reduzieren, wenn die Linien nahezu parallel sind.

Dieser Wert wirkt sich nur aus, wenn der Stiftstil auf Qt::MiterJoin eingestellt ist. Der Wert wird in Einheiten der Stiftbreite angegeben, z. B. ist eine Gehrungsgrenze von 5 bei Breite 10 50 Pixel lang. Die Standardgehrungsgrenze ist 2, d. h. das Doppelte der Stiftbreite in Pixeln.

Siehe auch miterLimit(), setJoinStyle(), und Join Style.

void QPen::setStyle(Qt::PenStyle style)

Setzt den Stiftstil auf den angegebenen style.

In der Dokumentation Qt::PenStyle finden Sie eine Liste der verfügbaren Stile. Seit Qt 4.1 ist es auch möglich, ein benutzerdefiniertes Strichmuster zu spezifizieren, indem man die Funktion setDashPattern() verwendet, die den Stil des Stifts implizit in Qt::CustomDashLine konvertiert.

Hinweis: Diese Funktion setzt den Dash-Offset auf Null zurück.

Siehe auch style() und Pen Style.

void QPen::setWidth(int width)

Setzt die Stiftbreite auf die angegebene width in Pixeln mit ganzzahliger Genauigkeit.

Eine Linienbreite von Null bedeutet einen kosmetischen Stift. Das bedeutet, dass die Stiftbreite immer ein Pixel breit gezeichnet wird, unabhängig von der Einstellung transformation im Painter.

Die Einstellung einer Stiftbreite mit einem negativen Wert wird nicht unterstützt.

Siehe auch setWidthF() und width().

void QPen::setWidthF(qreal width)

Setzt die Stiftbreite auf die angegebene width in Pixeln mit Fließkommagenauigkeit.

Eine Linienbreite von Null bedeutet einen kosmetischen Stift. Das bedeutet, dass die Stiftbreite immer ein Pixel breit gezeichnet wird, unabhängig von der transformation auf dem Painter.

Das Setzen einer Stiftbreite mit einem negativen Wert wird nicht unterstützt.

Siehe auch setWidth() und widthF().

Qt::PenStyle QPen::style() const

Gibt den Stiftstil zurück.

Siehe auch setStyle() und Pen Style.

[noexcept] void QPen::swap(QPen &other)

Tauscht diesen Stift mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

int QPen::width() const

Gibt die Stiftbreite mit ganzzahliger Genauigkeit zurück.

Siehe auch setWidth() und widthF().

qreal QPen::widthF() const

Gibt die Stiftbreite mit Fließkommagenauigkeit zurück.

Siehe auch setWidthF() und width().

QVariant QPen::operator QVariant() const

Gibt den Stift als QVariant zurück.

bool QPen::operator!=(const QPen &pen) const

Gibt true zurück, wenn sich der Stift von dem angegebenen pen unterscheidet; andernfalls false. Zwei Stifte sind verschieden, wenn sie unterschiedliche Stile, Breiten oder Farben haben.

Siehe auch operator==().

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

Verschieben - weist other dieser QPen Instanz zu.

[noexcept] QPen &QPen::operator=(const QPen &pen)

Weist diesem Stift die angegebene pen zu und gibt einen Verweis auf diesen Stift zurück.

bool QPen::operator==(const QPen &pen) const

Gibt true zurück, wenn der Stift gleich dem angegebenen pen ist; andernfalls false. Zwei Stifte sind gleich, wenn sie die gleichen Stile, Breiten und Farben haben.

Siehe auch operator!=().

Verwandte Nicht-Mitglieder

QDataStream &operator<<(QDataStream &stream, const QPen &pen)

Schreibt die angegebene pen in die angegebene stream und gibt eine Referenz auf die stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

QDataStream &operator>>(QDataStream &stream, QPen &pen)

Liest einen Stift aus der angegebenen stream in die angegebene pen und gibt eine Referenz auf die stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

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