QPen Class
La classe QPen définit la manière dont un « QPainter » doit tracer des lignes et les contours des formes. En savoir plus...
| En-tête : | #include <QPen> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- QPen fait partie des classes de peinture et des classes implicitement partagées.
Fonctions publiques
| 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 |
Éléments non membres associés
| QDataStream & | operator<<(QDataStream &stream, const QPen &pen) |
| QDataStream & | operator>>(QDataStream &stream, QPen &pen) |
Description détaillée
Un stylo dispose des méthodes style(), width(), brush(), capStyle() et joinStyle().
Le style de stylo définit le type de trait. Le pinceau sert à remplir les traits générés par le stylo. Utilisez la classe QBrush pour spécifier les styles de remplissage. Le style d’extrémité détermine les extrémités de trait pouvant être dessinées à l’aide de QPainter, tandis que le style de jonction décrit la manière dont les jonctions entre deux traits sont dessinées. La largeur du stylo peut être spécifiée aussi bien en précision entière (width()) qu’en précision à virgule flottante (widthF()). Une largeur de ligne égale à zéro indique un stylo décoratif. Cela signifie que la largeur du stylo est toujours dessinée avec une largeur d’un pixel, indépendamment de la valeur transformation définie sur le peintre.
Les différents paramètres peuvent être facilement modifiés à l’aide des fonctions correspondantes setStyle(), setWidth(), setBrush(), setCapStyle() et setJoinStyle() (notez que le stylo du peintre doit être réinitialisé lorsque l’on modifie les propriétés du stylo).
Par exemple :
QPainter painter(this);
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);ce qui équivaut à
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);Le stylo par défaut est un pinceau noir uni d’une largeur de 1, avec un embout carré (Qt::SquareCap) et un style de jonction biseauté (Qt::BevelJoin).
De plus, QPen fournit les fonctions de commodité color() et setColor() pour extraire et définir respectivement la couleur du pinceau du stylo. Les stylos peuvent également être comparés et transmis en continu.
Pour plus d’informations sur le dessin en général, consultez la documentation du système de peinture.
Style de stylo
Qt fournit plusieurs styles intégrés représentés par l’énumération Qt::PenStyle:
Il suffit d’utiliser la fonction setStyle() pour convertir le style du stylo en l’un des styles intégrés, à l’exception du style Qt::CustomDashLine sur lequel nous reviendrons dans un instant. Définir le style sur Qt::NoPen indique au moteur de dessin de ne pas tracer de lignes ni de contours. Le style de stylo par défaut est Qt::SolidLine.
Depuis Qt 4.1, il est également possible de spécifier un motif de tirets personnalisé à l’aide de la fonction ` setDashPattern()`, qui convertit implicitement le style du stylo en ` Qt::CustomDashLine`. L’argument `pattern`, de type ` QList`, doit être spécifié sous la forme d’un nombre pair d’entrées de type ` qreal `, où les entrées 1, 3, 5… correspondent aux tirets et les entrées 2, 4, 6… aux espaces. Par exemple, le motif personnalisé illustré ci-dessus est créé à l’aide du code suivant :
QPen pen;
QList<qreal> dashes;
qreal space = 4;
dashes << 1 << space << 3 << space << 9 << space
<< 27 << space << 9 << space;
pen.setDashPattern(dashes);Notez que le motif de tirets est spécifié en unités de largeur de stylo ; par exemple, un tiret de longueur 5 et de largeur 10 mesure 50 pixels de long.
Le motif de tirets actuellement défini peut être récupéré à l’aide de la fonction ` dashPattern()`. Utilisez la fonction ` isSolid()` pour déterminer si le stylo possède un remplissage plein ou non.
Style d’extrémité
Le style d’extrémité définit la manière dont les extrémités des lignes sont dessinées à l’aide de ` QPainter`. Le style d’extrémité ne s’applique qu’aux lignes larges, c’est-à-dire lorsque la largeur est égale ou supérieure à 1. L’énumération ` Qt::PenCapStyle ` propose les styles suivants :
Le style « Qt::SquareCap » correspond à une extrémité de ligne carrée qui recouvre le point d’extrémité et s’étend au-delà de celui-ci de la moitié de la largeur de la ligne. Le style « Qt::FlatCap » correspond à une extrémité de ligne carrée qui ne recouvre pas le point d’extrémité de la ligne. Enfin, le style « Qt::RoundCap » correspond à une extrémité de ligne arrondie qui recouvre le point d’extrémité.
La valeur par défaut est « Qt::SquareCap ».
Le fait que les points d’extrémité soient dessinés ou non lorsque la largeur du stylo est égale à 0 ou 1 dépend du style de terminaison. Avec les styles « Qt::SquareCap » ou « Qt::RoundCap », ils sont dessinés ; avec le style « Qt::FlatCap », ils ne le sont pas.
Style de jonction
Le style de jonction définit la manière dont les jonctions entre deux lignes connectées peuvent être dessinées à l’aide de QPainter. Le style de jonction ne s’applique qu’aux lignes larges, c’est-à-dire lorsque la largeur est égale ou supérieure à 1. L’énumération Qt::PenJoinStyle propose les styles suivants :
Le style « Qt::BevelJoin » remplit l’encoche triangulaire entre les deux lignes. Le style « Qt::MiterJoin » prolonge les lignes pour qu’elles se rejoignent en formant un angle. Et le style « Qt::RoundJoin » remplit un arc de cercle entre les deux lignes.
La valeur par défaut est « Qt::BevelJoin ».

Lorsque le style « Qt::MiterJoin » est appliqué, il est possible d’utiliser la fonction « setMiterLimit() » pour spécifier jusqu’à quelle distance la jonction en onglet peut s’étendre à partir du point de jonction. La fonction « miterLimit() » est utilisée pour réduire les artefacts entre les jonctions de lignes lorsque celles-ci sont presque parallèles.
La fonction « miterLimit » () doit être spécifiée en unités correspondant à la largeur du stylo ; par exemple, une limite de mitre de 5 pour une largeur de 10 correspond à une longueur de 50 pixels. La limite de mitre par défaut est de 2, soit deux fois la largeur du stylo en pixels.
![]() | Exemple de tracé de chemin L'exemple « Path Stroking » présente les motifs de traits intégrés à Qt et montre comment des motifs personnalisés peuvent être utilisés pour élargir la gamme de motifs disponibles. |
Voir également QPainter, QBrush, l’exemple de tracé de chemin et l’exemple de griffonnage.
Documentation des fonctions membres
QPen::QPen()
Crée un stylo par défaut représentant une ligne continue noire d'une largeur de 1.
QPen::QPen(Qt::PenStyle style)
Crée un stylo noir d'une largeur de 1 et dont la couleur est définie par l'style.
Voir aussi setStyle().
QPen::QPen(const QColor &color)
Crée un trait continu d'une largeur égale à 1 et selon l'color, comme indiqué.
Voir également setBrush() et setColor().
QPen::QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
Crée un stylo avec les propriétés suivantes : brush, width, pen style, cap style et join style.
Voir également setBrush(), setWidth(), setStyle(), setCapStyle() et setJoinStyle().
[noexcept] QPen::QPen(const QPen &pen)
Crée un stylo qui est une copie de l'pen.
[constexpr noexcept default] QPen::QPen(QPen &&pen)
Crée un stylo déplacé depuis l'pen ion indiquée.
Le stylo d'origine ne peut être que affecté, copié ou détruit. Toute autre opération (avant l'affectation) entraîne un comportement indéfini.
[noexcept] QPen::~QPen()
Il détruit le stylo.
QBrush QPen::brush() const
Renvoie le pinceau utilisé pour remplir les traits générés avec ce stylo.
Voir aussi setBrush().
Qt::PenCapStyle QPen::capStyle() const
Renvoie le style du capuchon du stylo.
Voir également setCapStyle() et Cap Style.
QColor QPen::color() const
Renvoie la couleur du pinceau de ce stylo.
Voir également brush() et setColor().
qreal QPen::dashOffset() const
Renvoie le décalage du tiret pour le stylo.
Voir également setDashOffset().
QList<qreal> QPen::dashPattern() const
Renvoie le motif de tirets de ce stylo.
Voir également setDashPattern(), style() et isSolid().
bool QPen::isCosmetic() const
Renvoie true si le stylo est de type « cosmetic » ; sinon, renvoie false.
Les stylos « cosmétiques » sont utilisés pour tracer des traits dont la largeur reste constante, quelles que soient les transformations appliquées à l'QPainter avec laquelle ils sont utilisés. Dessiner une forme avec un stylo « cosmétique » garantit que son contour aura la même épaisseur, quel que soit le facteur d'échelle.
Un stylo de largeur nulle est cosmétique par défaut.
Voir également setCosmetic() et widthF().
bool QPen::isSolid() const
Renvoie true si le stylo a un remplissage uni, sinon false.
Voir également style() et dashPattern().
Qt::PenJoinStyle QPen::joinStyle() const
Renvoie le style de jonction du trait.
Voir également setJoinStyle() et Join Style.
qreal QPen::miterLimit() const
Renvoie la limite d'onglet du trait. La limite d'onglet n'est pertinente que lorsque le style de jonction est défini sur « Qt::MiterJoin ».
Voir également setMiterLimit() et Join Style.
void QPen::setBrush(const QBrush &brush)
Définit le pinceau utilisé pour remplir les traits générés avec ce stylo sur l'brush spécifiée.
Voir également brush() et setColor().
void QPen::setCapStyle(Qt::PenCapStyle style)
Définit le style du capuchon du stylo sur la valeur indiquée style. La valeur par défaut est Qt::SquareCap.
Voir également capStyle() et Cap Style.
void QPen::setColor(const QColor &color)
Définit la couleur du pinceau de ce stylo selon l'color indiquée.
Voir également setBrush() et color().
void QPen::setCosmetic(bool cosmetic)
Définit ce stylo comme « cosmétique » ou « non cosmétique », en fonction de la valeur de cosmetic.
Voir également isCosmetic().
void QPen::setDashOffset(qreal offset)
Définit le décalage du trait (le point de départ du motif de trait) pour ce stylo à l'offset e spécifiée. Le décalage est mesuré en unités utilisées pour définir le motif de trait.
![]() | Par exemple, un motif dont chaque trait mesure quatre unités, suivi d’un espace de deux unités, commencera par le trait lorsqu’il sera tracé sous forme de ligne. Cependant, si le décalage du trait est défini sur 4,0, toute ligne tracée commencera par l'espace. Les valeurs de décalage inférieures ou égales à 4,0 entraîneront le tracé d'une partie du trait en premier, tandis que les valeurs comprises entre 4,0 et 6,0 feront que la ligne commencera par une partie de l'espace. |
Remarque : cela convertit implicitement le style du stylo en « Qt::CustomDashLine ».
Voir également dashOffset().
void QPen::setDashPattern(const QList<qreal> &pattern)
Définit le motif de tirets de ce stylo selon l'pattern. Cela convertit implicitement le style du stylo en Qt::CustomDashLine.
Le motif doit être spécifié sous la forme d’un nombre pair d’entrées positives, où les entrées 1, 3, 5… correspondent aux traits et les entrées 2, 4, 6… aux espaces. Par exemple :
![]() |
Le motif de tirets est spécifié en unités correspondant à la largeur des stylos ; par exemple, un tiret de longueur 5 et de largeur 10 mesure 50 pixels de long. Notez qu’un stylo de largeur nulle équivaut à un stylo cosmétique d’une largeur de 1 pixel.
Chaque tiret est également soumis à des styles d'extrémités ; ainsi, un tiret de longueur 1 avec des extrémités carrées s'étendra de 0,5 pixel dans chaque direction, ce qui donne une largeur totale de 2.
Notez que le style d’extrémité par défaut est « Qt::SquareCap », ce qui signifie qu’une extrémité carrée recouvre le point d’extrémité et s’étend au-delà de celui-ci de la moitié de la largeur de la ligne.
Voir également setStyle(), dashPattern(), setCapStyle() et setCosmetic().
void QPen::setJoinStyle(Qt::PenJoinStyle style)
Définit le style de jonction du trait sur la valeur indiquée : style. La valeur par défaut est Qt::BevelJoin.
Voir également joinStyle() et Join Style.
void QPen::setMiterLimit(qreal limit)
Définit la limite d'onglet de ce stylo à la valeur indiquée limit.

La limite de chanfrein définit jusqu'où un raccord en chanfrein peut s'étendre à partir du point de jonction. Elle permet de réduire les artefacts entre les jonctions de lignes lorsque celles-ci sont presque parallèles.
Cette valeur n’a d’effet que lorsque le style de stylo est défini sur « Qt::MiterJoin ». La valeur est spécifiée en unités correspondant à la largeur du stylo ; par exemple, une limite de mitre de 5 pour une largeur de 10 correspond à une longueur de 50 pixels. La limite de mitre par défaut est de 2, c’est-à-dire deux fois la largeur du stylo en pixels.
Voir également miterLimit(), setJoinStyle() et Join Style.
void QPen::setStyle(Qt::PenStyle style)
Définit le style du trait sur la valeur indiquée dans ` style`.
Consultez la documentation d'Qt::PenStyle pour obtenir la liste des styles disponibles. Depuis Qt 4.1, il est également possible de spécifier un motif de tirets personnalisé à l'aide de la fonction setDashPattern(), qui convertit implicitement le style du stylo en Qt::CustomDashLine.
Remarque : cette fonction remet le décalage des tirets à zéro.
Voir également style() et Pen Style.
void QPen::setWidth(int width)
Définit la largeur du stylo à l'width spécifiée en pixels, avec une précision entière.
Une largeur de trait égale à zéro indique un stylo décoratif. Cela signifie que la largeur du trait est toujours de un pixel, quelle que soit l'transformation définie sur l'outil de dessin.
La définition d’une largeur de stylo avec une valeur négative n’est pas prise en charge.
Voir également ` setWidthF()` et ` width()`.
void QPen::setWidthF(qreal width)
Définit la largeur du stylo selon l'width fournie en pixels, avec une précision en virgule flottante.
Une largeur de trait égale à zéro correspond à un stylo décoratif. Cela signifie que la largeur du trait est toujours de un pixel, quelle que soit l'transformation définie sur le peintre.
La définition d’une largeur de stylo avec une valeur négative n’est pas prise en charge.
Voir également setWidth() et widthF().
Qt::PenStyle QPen::style() const
Renvoie le style du stylo.
Voir également setStyle() et Pen Style.
[noexcept] void QPen::swap(QPen &other)
Échangez ce stylo contre other. Cette opération est très rapide et fonctionne à coup sûr.
int QPen::width() const
Renvoie la largeur du stylo avec une précision entière.
Voir également setWidth() et widthF().
qreal QPen::widthF() const
Renvoie la largeur du stylo avec une précision en virgule flottante.
Voir également setWidthF() et width().
QPen::operator QVariant() const
Renvoie le stylo sous la forme d'un objet ` QVariant`.
bool QPen::operator!=(const QPen &pen) const
Renvoie « true » si le stylo est différent de celui indiqué par ` pen` ; sinon, renvoie « false ». Deux stylos sont considérés comme différents s'ils ont des styles, des largeurs ou des couleurs différents.
Voir aussi operator==().
[noexcept] QPen &QPen::operator=(QPen &&other)
Cette opération attribue l'other à cette instance QPen.
[noexcept] QPen &QPen::operator=(const QPen &pen)
Attribue l'pen on indiquée à ce stylo et renvoie une référence à ce stylo.
[since 6.9] QPen &QPen::operator=(QColor color)
Crée un stylo de type « solide » avec la couleur indiquée, ainsi que les styles par défaut pour le capuchon et la jonction, puis renvoie une référence à ce stylo.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.9.
[since 6.9] QPen &QPen::operator=(Qt::PenStyle style)
Transforme ce stylo en un stylo noir uni avec les styles de capuchon et de raccord par défaut, puis renvoie une référence à ce stylo.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.9.
bool QPen::operator==(const QPen &pen) const
Renvoie « true » si le stylo est égal à celui indiqué par ` pen` ; sinon, renvoie « false ». Deux stylos sont égaux s'ils ont les mêmes styles, largeurs et couleurs.
Voir aussi operator!=().
Éléments non membres associés
QDataStream &operator<<(QDataStream &stream, const QPen &pen)
Écrit l'pen on fournie dans l'stream on indiquée et renvoie une référence à l'stream on.
Voir également Sérialisation des types de données Qt.
QDataStream &operator>>(QDataStream &stream, QPen &pen)
Lit un stylo à partir de l'stream spécifiée dans l'pen spécifiée et renvoie une référence à l'stream.
Voir également Sérialisation des types de données Qt.
© 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.













