Auf dieser Seite

QPen Class

Die Klasse „QPen“ legt fest, wie ein „ QPainter “ Linien und Umrisse von Formen zeichnen soll. Mehr...

Header: #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
operator QVariant() const
bool operator!=(const QPen &pen) const
QPen &operator=(QPen &&other)
QPen &operator=(const QPen &pen)
(since 6.9) QPen &operator=(QColor color)
(since 6.9) QPen &operator=(Qt::PenStyle style)
bool operator==(const QPen &pen) const
QDataStream &operator<<(QDataStream &stream, const QPen &pen)
QDataStream &operator>>(QDataStream &stream, QPen &pen)

Detaillierte Beschreibung

Ein Stift verfügt über die Methoden „ 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 Endkappenstil 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 mit ganzzahliger (width()) als auch mit Gleitkommagenauigkeit (widthF()) angegeben werden. Eine Linienbreite von Null steht für einen kosmetischen Stift. Das bedeutet, dass die Stiftbreite immer mit einer Breite von einem Pixel gezeichnet wird, unabhängig von der im „ transformation “-Parameter des „Painter“ festgelegten Einstellung.

Die verschiedenen Einstellungen lassen sich leicht mit den entsprechenden Funktionen ` setStyle()`, ` setWidth()`, ` setBrush()`, ` setCapStyle()` und ` setJoinStyle()` ändern (beachten Sie, dass der Stift des Painters zurückgesetzt werden muss, wenn die Eigenschaften des Stifts geändert werden).

Beispiel:

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

was gleichbedeutend ist 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 durchgehend schwarzer Pinsel mit der Breite 1, dem Stil „Quadratische Spitze“ (Qt::SquareCap) und dem Verbindungsstil „Abgeschrägt“ (Qt::BevelJoin).

Darüber hinaus bietet QPen die Hilfsfunktionen ` color()` und ` setColor()`, um die Farbe des Pinsels des Stifts abzurufen bzw. festzulegen. Stifte können auch verglichen und gestreamt werden.

Weitere Informationen zum Zeichnen im Allgemeinen finden Sie in der Dokumentation zum Zeichensystem.

Stiftstil

Qt bietet mehrere integrierte Stile, die durch die Enumeration ` Qt::PenStyle ` repräsentiert werden:

Verwenden Sie einfach die Funktion ` setStyle()` (Stiftstil), um den Stiftstil in einen der integrierten Stile umzuwandeln – mit Ausnahme des Stils ` Qt::CustomDashLine `, auf den wir gleich noch zurückkommen werden. Wenn Sie den Stil auf ` Qt::NoPen ` setzen, wird der Painter angewiesen, keine Linien oder Konturen zu zeichnen. Der Standard-Stiftstil ist ` Qt::SolidLine`.

Seit Qt 4.1 ist es außerdem möglich, mithilfe der Funktion „ setDashPattern()“ ein benutzerdefiniertes Strichmuster anzugeben, wobei der Stiftstil implizit in „ Qt::CustomDashLine “ umgewandelt wird. Das Argument „pattern“, 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 Lücken darstellen. Das oben gezeigte benutzerdefinierte Muster wird beispielsweise 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 durchgehende Füllung hat oder nicht.

Endpunktstil

Der Endpunktstil legt fest, wie die Endpunkte von Linien mithilfe von ` QPainter` gezeichnet werden. Der Endpunktstil 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 quadratischer Linienabschluss, der den Endpunkt bedeckt und um die Hälfte der Linienbreite darüber hinausragt. Der Stil „ Qt::FlatCap “ ist ein quadratischer Linienabschluss, der den Endpunkt der Linie nicht bedeckt. Und der Stil „ Qt::RoundCap “ ist ein abgerundeter Linienabschluss, der den Endpunkt bedeckt.

Die Standardeinstellung ist „ Qt::SquareCap “.

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

Verbindungsstil

Der Verbindungsstil legt fest, wie Verbindungen zwischen zwei miteinander verbundenen Linien unter Verwendung von ` QPainter` gezeichnet werden können. Der Verbindungsstil gilt nur für breite Linien, d. h. wenn die Breite 1 oder größer ist. Die Enumeration ` Qt::PenJoinStyle ` bietet die folgenden Stile:

Der Stil „ Qt::BevelJoin “ füllt die dreieckige Lücke zwischen den beiden Linien aus. Der Stil „ Qt::MiterJoin “ verlängert 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 “.

Abbildung, die veranschaulicht, wie „miterLimit“ die Länge der scharfen Ecke bei „miterJoin“ steuert

Wenn der Stil „ Qt::MiterJoin “ angewendet wird, kann mit der Funktion „ setMiterLimit()“ festgelegt werden, wie weit sich die Gehrungsverbindung vom Verbindungspunkt aus erstrecken darf. Die Funktion „ miterLimit()“ wird verwendet, um Artefakte an Linienverbindungen zu reduzieren, an denen die Linien nahezu parallel verlaufen.

Der Wert für „ miterLimit “ () muss in Einheiten der Stiftbreite angegeben werden, z. B. beträgt eine Gehrungsbegrenzung von 5 bei einer Breite von 10 eine Länge von 50 Pixel. Die Standard-Gehrungsbegrenzung beträgt 2, d. h. das Doppelte der Stiftbreite in Pixel.

Anwendung zum Zeichnen von Pfaden mit StiftoptionenDas Beispiel „Path Stroking“

Das Beispiel „Path Stroking“ zeigt die in Qt integrierten Strichmuster und veranschaulicht, wie benutzerdefinierte Muster verwendet werden können, um die Auswahl an verfügbaren Mustern zu erweitern.

Siehe auch „ QPainter“ , „ QBrush “, „Beispiel für Pfadkonturierung“ und „Beispiel für Kritzeln“.

Dokumentation der Member-Funktionen

QPen::QPen()

Erstellt einen standardmäßigen schwarzen durchgezogenen Strich mit der Breite 1.

QPen::QPen(Qt::PenStyle style)

Erstellt einen schwarzen Stift mit der Breite 1 und dem angegebenen style.

Siehe auch ` setStyle()`.

QPen::QPen(const QColor &color)

Erzeugt einen Stift für durchgezogene Linien mit der Breite 1 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)

Erstellt einen Stift mit den angegebenen Stilen „ brush “, „ width “, „pen style “, „ cap “ und „ join “.

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

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

Erzeugt einen Stift, der eine Kopie des angegebenen „ pen “ ist.

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

Erstellt einen Stift, der aus dem angegebenen „ pen “ verschoben wurde.

Der aus „xml-ph-0000@deepl.internal“ verschobene Pen 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 Ausfüllen der mit diesem Stift erzeugten Striche verwendet wird.

Siehe auch „ setBrush()“.

Qt::PenCapStyle QPen::capStyle() const

Gibt den Stil der Stiftkappe 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 Kosmetikstift handelt; andernfalls wird „ false “ zurückgegeben.

Kosmetische Stifte werden verwendet, um Striche zu zeichnen, die unabhängig von den auf den QPainter, mit dem sie verwendet werden, angewendeten Transformationen eine konstante Breite aufweisen. Das Zeichnen einer Form mit einem kosmetischen Stift stellt sicher, dass ihr Umriss bei unterschiedlichen Skalierungsfaktoren die gleiche Dicke aufweist.

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

Siehe auch „ setCosmetic()“ und „ widthF()“.

bool QPen::isSolid() const

Gibt „ true “ zurück, wenn der Stift eine durchgehende Füllung hat, andernfalls „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 den Gehrungsgrenzwert des Stifts zurück. Der Gehrungsgrenzwert ist nur relevant, wenn der Fugenstil auf „ Qt::MiterJoin “ gesetzt ist.

Siehe auch „ setMiterLimit()“ und „ Join Style “.

void QPen::setBrush(const QBrush &brush)

Legt den Pinsel fest, der zum Ausfü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 Stil der Stiftkappe auf den angegebenen Wert „ style “. Der Standardwert ist „ Qt::SquareCap “.

Siehe auch capStyle() und Cap Style.

void QPen::setColor(const QColor &color)

Legt die Farbe des Pinsels dieses Stifts auf den angegebenen Wert „ color “ fest.

Siehe auch setBrush() und color().

void QPen::setCosmetic(bool cosmetic)

Legt fest, ob dieser Stift kosmetisch oder nicht-kosmetisch ist, abhängig vom Wert von „ cosmetic “.

Siehe auch ` isCosmetic()`.

void QPen::setDashOffset(qreal offset)

Legt den Strichversatz (den Startpunkt des Strichmusters) für diesen Stift auf den angegebenen Wert „ offset “ fest. Der Versatz wird in den Einheiten gemessen, die zur Festlegung des Strichmusters verwendet werden.

Strichmuster mit unterschiedlichen VersätzenBeispielsweise beginnt ein Muster, bei dem jeder Strich vier Einheiten lang ist und auf den ein Abstand von zwei Einheiten folgt, beim Zeichnen als Linie mit dem Strich.

Ist der Strichversatz jedoch auf 4,0 gesetzt, beginnt jede gezeichnete Linie mit der Lücke. Bei Versatzwerten bis zu 4,0 wird zunächst ein Teil des Strichs gezeichnet, und bei Versatzwerten zwischen 4,0 und 6,0 beginnt die Linie mit einem Teil der Lücke.

Hinweis: Dadurch wird der Stil des Stifts implizit in „ Qt::CustomDashLine “ umgewandelt.

Siehe auch ` dashOffset()`.

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

Legt das Strichmuster für diesen Stift auf das angegebene „ pattern “ fest. Dadurch wird der Stil des Stifts implizit in „ Qt::CustomDashLine “ umgewandelt.

Das Muster muss als gerade Anzahl positiver Einträge angegeben werden, wobei die Einträge 1, 3, 5… die Striche und 2, 4, 6… die Lücken darstellen. Zum Beispiel:

Benutzerdefinierte gestrichelte Linie
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 zudem den Endstil-Einstellungen, sodass ein Strich der Länge 1 mit dem Endstil „quadratisch“ in jede Richtung um 0,5 Pixel über den Strich hinausragt, was zu einer Gesamtbreite von 2 führt.

Beachten Sie, dass der Standard-Endstil „ Qt::SquareCap “ ist, was bedeutet, dass ein quadratisches Linienende den Endpunkt bedeckt und um die Hälfte der Linienbreite darüber hinausragt.

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

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

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

Siehe auch „ joinStyle()“ und „ Join Style “.

void QPen::setMiterLimit(qreal limit)

Legt die Gehrungsgrenze dieses Stifts auf den angegebenen Wert „ limit “ fest.

Gehrungsverbindung mit den Bezeichnungen „Breite“ und „Gehrungsgrenze“

Die Gehrungsgrenze beschreibt, wie weit sich eine Gehrungsverbindung vom Verbindungspunkt aus erstrecken darf. Dies dient dazu, Artefakte zwischen Linienverbindungen zu reduzieren, bei denen die Linien nahezu parallel verlaufen.

Dieser Wert wirkt sich nur aus, wenn der Stiftstil auf „ Qt::MiterJoin “ eingestellt ist. Der Wert wird in Einheiten der Stiftbreite angegeben, z. B. beträgt eine Gehrungsbegrenzung von 5 bei einer Breite von 10 eine Länge von 50 Pixeln. Die Standard-Gehrungsbegrenzung beträgt 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 “.

Eine Liste der verfügbaren Stile finden Sie in der Dokumentation zu „ Qt::PenStyle “. Seit Qt 4.1 ist es außerdem möglich, mithilfe der Funktion „ setDashPattern()“ ein benutzerdefiniertes Strichmuster anzugeben, wodurch der Stil des Stifts implizit in „ Qt::CustomDashLine “ umgewandelt wird.

Hinweis: Diese Funktion setzt den Strichversatz auf Null zurück.

Siehe auch „ style()“ und „ Pen Style “.

void QPen::setWidth(int width)

Stellt die Stiftbreite auf den angegebenen Wert „ width “ in Pixeln mit ganzzahliger Genauigkeit ein.

Eine Linienbreite von Null weist auf einen kosmetischen Stift hin. Das bedeutet, dass die Stiftbreite immer ein Pixel breit gezeichnet wird, unabhängig von der für den Painter festgelegten „ transformation “.

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

Siehe auch „ setWidthF()“ und „ width()“.

void QPen::setWidthF(qreal width)

Stellt die Stiftbreite auf die angegebene width in Pixeln mit Gleitkommagenauigkeit ein.

Eine Linienbreite von Null kennzeichnet einen kosmetischen Stift. Das bedeutet, dass die Stiftbreite unabhängig von der im „ transformation “ des „Painter“ festgelegten Einstellung stets mit einer Breite von einem Pixel gezeichnet wird.

Die Einstellung 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)

Tausche diesen Stift gegen other aus. Dieser Vorgang ist sehr schnell und funktioniert immer.

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 Gleitkommagenauigkeit zurück.

Siehe auch „ setWidthF()“ und „ width()“.

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 vom angegebenen „ pen “ unterscheidet; andernfalls „false“. Zwei Stifte unterscheiden sich, wenn sie unterschiedliche Stile, Breiten oder Farben haben.

Siehe auch operator==().

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

Weist „ other “ dieser „ QPen “-Instanz zu.

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

Weist diesem Stift den angegebenen „ pen “ zu und gibt eine Referenz auf diesen Stift zurück.

[since 6.9] QPen &QPen::operator=(QColor color)

Erstellt einen soliden Stift in der angegebenen Farbe mit den Standardausführungen für Kappe und Verbindungsstück und gibt eine Referenz auf diesen Stift zurück.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.9 eingeführt.

[since 6.9] QPen &QPen::operator=(Qt::PenStyle style)

Macht diesen Stift zu einem einfarbigen, schwarzen Stift mit den Standardausführungen für Kappe und Verbindungsstück und gibt eine Referenz auf diesen Stift zurück.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.9 eingeführt.

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

Gibt „ true “ zurück, wenn der Stift mit dem angegebenen „ pen “ übereinstimmt; andernfalls „false“. Zwei Stifte sind gleich, wenn sie dieselben Stile, Breiten und Farben aufweisen.

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 vonQt-Datentypen“.

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

Liest einen Stift aus dem angegebenen „ stream “ in den angegebenen „ pen “ ein und gibt eine Referenz auf den „ stream “ zurück.

Siehe auch „Serialisierung vonQt-Datentypen“.

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