QPen Class
QPen 클래스는 QPainter 가 도형의 선과 윤곽선을 그리는 방법을 정의합니다. 더 보기...
| 헤더: | #include <QPen> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 상속된 멤버를 포함한 모든 멤버 목록
- QPen은 페인팅 클래스 및 암시적 공유 클래스의 일부입니다.
공개 함수
| 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) |
상세 설명
펜에는 style(), width(), brush(), capStyle() 및 joinStyle()가 있습니다.
펜 스타일은 선 유형을 정의합니다. 브러시는 펜으로 생성된 획을 채우는 데 사용됩니다. 채우기 스타일을 지정하려면 QBrush 클래스를 사용하십시오. 캡 스타일은 QPainter 를 사용하여 그릴 수 있는 선 끝 캡을 결정하는 반면, 조인 스타일은 두 선 사이의 연결부가 어떻게 그려지는지를 설명합니다. 펜 너비는 정수(width()) 및 부동 소수점(widthF()) 정밀도로 모두 지정할 수 있습니다. 선 너비가 0이면 장식용 펜을 의미합니다. 즉, 페인터에 설정된 transformation 와 관계없이 펜 너비는 항상 1픽셀 너비로 그려집니다.
각 설정은 해당 함수인 setStyle(), setWidth(), setBrush(), setCapStyle() 및 setJoinStyle()을 사용하여 쉽게 수정할 수 있습니다(펜의 속성을 변경할 때는 페인터의 펜을 재설정해야 합니다).
예를 들어:
QPainter painter(this);
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);이는 다음 코드와 동일합니다.
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);기본 펜은 두께 1의 단색 검은색 브러시로, 사각형 캡 스타일(Qt::SquareCap)과 베벨 조인 스타일(Qt::BevelJoin)을 갖습니다.
또한 QPen은 펜 브러시의 색상을 각각 추출하고 설정하기 위한 편의 함수인 color()와 setColor()를 제공합니다. 펜은 비교 및 스트리밍도 가능합니다.
그리기 작업에 대한 일반적인 정보는 페인트 시스템 (Paint System) 문서를 참조하십시오.
펜 스타일
Qt는 Qt::PenStyle 열거형으로 표현되는 여러 내장 스타일을 제공합니다:
setStyle() 함수를 사용하면 펜 스타일을 내장 스타일 중 하나로 변환할 수 있습니다. 단, 잠시 후에 다시 다룰 Qt::CustomDashLine 스타일은 예외입니다. 스타일을 Qt::NoPen 로 설정하면 페인터가 선이나 윤곽선을 그리지 않도록 지시합니다. 기본 펜 스타일은 Qt::SolidLine 입니다.
Qt 4.1부터는 setDashPattern() 함수를 사용하여 사용자 정의 대시 패턴을 지정할 수도 있는데, 이 함수는 펜 스타일을 암시적으로 Qt::CustomDashLine 로 변환합니다. 패턴 인자( QList)는 qreal 항목의 짝수 개수로 지정되어야 하며, 여기서 항목 1, 3, 5... 는 대시이고, 2, 4, 6...은 공백입니다. 예를 들어, 위에 표시된 사용자 정의 패턴은 다음 코드를 사용하여 생성됩니다:
QPen pen;
QList<qreal> dashes;
qreal space = 4;
dashes << 1 << space << 3 << space << 9 << space
<< 27 << space << 9 << space;
pen.setDashPattern(dashes);대시 패턴은 펜 너비 단위로 지정된다는 점에 유의하십시오. 예를 들어, 너비 10에서 길이 5의 대시는 50픽셀 길이가 됩니다.
현재 설정된 대시 패턴은 ` dashPattern()` 함수를 사용하여 확인할 수 있습니다. ` isSolid()` 함수를 사용하여 펜에 채우기가 적용되어 있는지 여부를 확인할 수 있습니다.
끝점 스타일
캡 스타일은 QPainter 을 사용하여 선의 끝점이 어떻게 그려지는지를 정의합니다. 캡 스타일은 너비가 1 이상인, 즉 굵은 선에만 적용됩니다. Qt::PenCapStyle 열거형은 다음과 같은 스타일을 제공합니다:
Qt::SquareCap 스타일은 선의 끝점을 덮고 선 너비의 절반만큼 끝점을 넘어 확장되는 사각형 선 끝입니다. Qt::FlatCap 스타일은 선의 끝점을 덮지 않는 사각형 선 끝입니다. 그리고 Qt::RoundCap 스타일은 끝점을 덮는 둥근 선 끝입니다.
기본값은 Qt::SquareCap 입니다.
펜 너비가 0이거나 1일 때 끝점이 그려지는지 여부는 끝점 스타일(cap style)에 따라 달라집니다. ‘ Qt::SquareCap ’ 또는 ‘ Qt::RoundCap ’을 사용하면 끝점이 그려지지만, ‘ Qt::FlatCap ’을 사용하면 그려지지 않습니다.
연결 스타일
접합 스타일은 QPainter 을 사용하여 두 개의 연결된 선 사이의 접합부를 어떻게 그릴지 정의합니다. 접합 스타일은 선폭이 1 이상인, 즉 굵은 선에만 적용됩니다. Qt::PenJoinStyle 열거형은 다음과 같은 스타일을 제공합니다:
Qt::BevelJoin 스타일은 두 선 사이의 삼각형 모양 틈을 채웁니다. Qt::MiterJoin 스타일은 선을 연장하여 비스듬히 만나게 합니다. 그리고 Qt::RoundJoin 스타일은 두 선 사이의 원호 부분을 채웁니다.
기본값은 ` Qt::BevelJoin`입니다.

Qt::MiterJoin 스타일이 적용되면, setMiterLimit() 함수를 사용하여 마이터 접합부가 접합점에서 얼마나 멀리까지 확장될 수 있는지 지정할 수 있습니다. miterLimit()는 선들이 거의 평행한 경우 선 접합부 사이의 아티팩트를 줄이는 데 사용됩니다.
miterLimit()은 펜 너비 단위로 지정해야 합니다. 예를 들어, 너비 10에서 마이터 제한을 5로 설정하면 길이는 50픽셀이 됩니다. 기본 마이터 제한은 2이며, 이는 픽셀 단위로 펜 너비의 2배에 해당합니다.
![]() | 경로 스트로킹 예제 '경로 획 그리기' 예제는 Qt에 내장된 대시 패턴을 보여주고, 사용자 정의 패턴을 사용하여 사용 가능한 패턴의 범위를 확장하는 방법을 설명합니다. |
QPainter, QBrush, 경로 스트로킹 예제 및 낙서 예제도참조하십시오 .
멤버 함수 문서
QPen::QPen()
두께가 1인 기본 검은색 실선 펜을 생성합니다.
QPen::QPen(Qt::PenStyle style)
폭이 1이고 주어진 style 를 가진 검은색 펜을 생성합니다.
setStyle()도 참조하십시오 .
QPen::QPen(const QColor &color)
폭 1이고 주어진 color 를 갖는 실선 펜을 생성합니다.
setBrush() 및 setColor()도 참조하십시오 .
QPen::QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
지정된 brush, width, pen style, cap 스타일 및 join 스타일을 가진 펜을 생성합니다.
setBrush(), setWidth(), setStyle(), setCapStyle() 및 setJoinStyle()도 참조하십시오 .
[noexcept] QPen::QPen(const QPen &pen)
주어진 ` pen`의 복사본인 펜을 생성합니다.
[constexpr noexcept default] QPen::QPen(QPen &&pen)
지정된 pen 에서 이동된 펜을 생성합니다.
moved-from 펜은 할당, 복사 또는 소멸만 가능합니다. (할당 이전에) 그 외의 모든 작업은 정의되지 않은 동작을 초래합니다.
[noexcept] QPen::~QPen()
펜을 부숴 버린다.
QBrush QPen::brush() const
이 펜으로 생성된 획을 채우는 데 사용된 브러시를 반환합니다.
setBrush()도 참조하십시오 .
Qt::PenCapStyle QPen::capStyle() const
펜 캡의 스타일을 반환합니다.
setCapStyle() 및 Cap Style도 참조하십시오 .
QColor QPen::color() const
이 펜의 브러시 색상을 반환합니다.
brush() 및 setColor()도 참조하십시오 .
qreal QPen::dashOffset() const
펜의 대시 오프셋을 반환합니다.
setDashOffset()도 참조하십시오 .
QList<qreal> QPen::dashPattern() const
이 펜의 대시 패턴을 반환합니다.
setDashPattern(), style(), isSolid()도 참조하십시오 .
bool QPen::isCosmetic() const
펜이 코스메틱 펜인 경우 ` true `을 반환하고, 그렇지 않은 경우 ` false`을 반환합니다.
코스메틱 펜은 함께 사용되는 QPainter 에 어떤 변환이 적용되더라도 일정한 너비를 가진 선을 그리는 데 사용됩니다. 코스메틱 펜으로 도형을 그리면 다양한 배율에서 도형의 윤곽선 두께가 동일하게 유지됩니다.
폭이 0인 펜은 기본적으로 장식용입니다.
setCosmetic() 및 widthF()도 참조하십시오 .
bool QPen::isSolid() const
펜에 단색 채우기가 설정되어 있으면 true 를 반환하고, 그렇지 않으면 false를 반환합니다.
style() 및 dashPattern()도 참조하십시오 .
Qt::PenJoinStyle QPen::joinStyle() const
펜의 연결 스타일을 반환합니다.
setJoinStyle() 및 Join Style도 참조하십시오 .
qreal QPen::miterLimit() const
펜의 마이터 제한값을 반환합니다. 마이터 제한값은 조인 스타일이 ‘ Qt::MiterJoin ’로 설정된 경우에만 적용됩니다.
setMiterLimit() 및 Join Style도 참조하십시오 .
void QPen::setBrush(const QBrush &brush)
이 펜으로 생성된 획을 채우는 데 사용되는 브러시를 지정된 brush 로 설정합니다.
brush() 및 setColor()도 참조하십시오 .
void QPen::setCapStyle(Qt::PenCapStyle style)
펜 캡 스타일을 지정된 style 로 설정합니다. 기본값은 Qt::SquareCap 입니다.
capStyle() 및 Cap Style도 참조하십시오 .
void QPen::setColor(const QColor &color)
이 펜의 브러시 색상을 지정된 color 로 설정합니다.
setBrush() 및 color()도 참조하십시오 .
void QPen::setCosmetic(bool cosmetic)
cosmetic 의 값에 따라 이 펜을 ‘cosmetic’ 또는 ‘non-cosmetic’으로 설정합니다.
isCosmetic()도 참조하십시오 .
void QPen::setDashOffset(qreal offset)
이 펜의 대시 오프셋(대시 패턴의 시작점)을 지정된 offset 값으로 설정합니다. 오프셋은 대시 패턴을 지정하는 데 사용된 단위를 기준으로 측정됩니다.
![]() | 예를 들어, 각 획의 길이가 4단위이고 그 뒤에 2단위의 간격이 오는 패턴의 경우, 선으로 그릴 때 획부터 시작됩니다. 그러나 대시 오프셋이 4.0으로 설정된 경우, 그려지는 모든 선은 간격 부분부터 시작됩니다. 오프셋 값이 4.0 이하일 때는 획의 일부가 먼저 그려지고, 오프셋 값이 4.0에서 6.0 사이일 때는 선이 간격의 일부부터 시작됩니다. |
참고: 이 경우 펜의 스타일이 암시적으로 ` Qt::CustomDashLine`로 변환됩니다.
dashOffset()도 참조하십시오 .
void QPen::setDashPattern(const QList<qreal> &pattern)
이 펜의 대시 패턴을 지정된 ` pattern`로 설정합니다. 이렇게 하면 펜의 스타일이 암묵적으로 ` Qt::CustomDashLine`로 변환됩니다.
패턴은 짝수 개의 양수 항목으로 지정해야 하며, 여기서 1, 3, 5…번 항목은 대시이고 2, 4, 6…번 항목은 공백입니다. 예를 들면:
![]() |
대시 패턴은 펜의 너비 단위로 지정됩니다. 예를 들어, 너비 10인 펜에서 길이 5의 대시는 50픽셀 길이가 됩니다. 너비가 0인 펜은 너비가 1픽셀인 장식용 펜과 동일하다는 점에 유의하십시오.
각 대시에는 끝단 스타일이 적용되므로, 사각 끝단이 설정된 길이 1의 대시는 각 방향으로 0.5 픽셀씩 확장되어 총 너비가 2가 됩니다.
기본 캡 스타일은 ‘ Qt::SquareCap ’이며, 이는 사각형 선 끝이 끝점을 덮고 선 너비의 절반만큼 끝점을 넘어 확장됨을 의미합니다.
setStyle(), dashPattern(), setCapStyle() 및 setCosmetic()도 참조하십시오 .
void QPen::setJoinStyle(Qt::PenJoinStyle style)
펜의 연결 스타일을 지정된 style 로 설정합니다. 기본값은 Qt::BevelJoin 입니다.
joinStyle() 및 Join Style도 참조하십시오 .
void QPen::setMiterLimit(qreal limit)
이 펜의 마이터 제한을 지정된 값 limit 로 설정합니다.

마이터 제한은 마이터 접합부가 접합점에서 얼마나 멀리 뻗어 나갈 수 있는지를 나타냅니다. 이 기능은 선들이 거의 평행한 경우 선 접합부 사이의 아티팩트를 줄이는 데 사용됩니다.
이 값은 펜 스타일이 ` Qt::MiterJoin`로 설정된 경우에만 적용됩니다. 값은 펜 너비 단위로 지정되며, 예를 들어 너비가 10인 펜에서 마이터 제한값이 5인 경우 길이는 50픽셀이 됩니다. 기본 마이터 제한값은 2이며, 이는 픽셀 단위로 펜 너비의 두 배에 해당합니다.
miterLimit(), setJoinStyle() 및 Join Style도 참조하십시오 .
void QPen::setStyle(Qt::PenStyle style)
펜 스타일을 지정된 style 로 설정합니다.
사용 가능한 스타일 목록은 Qt::PenStyle 문서를 참조하십시오. Qt 4.1부터는 setDashPattern() 함수를 사용하여 사용자 정의 대시 패턴을 지정할 수도 있으며, 이 함수는 펜의 스타일을 암시적으로 Qt::CustomDashLine 로 변환합니다.
참고: 이 함수는 대시 오프셋을 0으로 재설정합니다.
void QPen::setWidth(int width)
펜 너비를 지정된 width 값(픽셀 단위)으로 정수 정밀도로 설정합니다.
선 너비가 0이면 장식용 펜을 의미합니다. 이는 페인터에 설정된 transformation 와 관계없이 펜 너비가 항상 1픽셀로 그려진다는 것을 의미합니다.
음수 값으로 펜 너비를 설정하는 것은 지원되지 않습니다.
setWidthF() 및 width()도 참조하십시오 .
void QPen::setWidthF(qreal width)
펜 너비를 부동 소수점 정밀도로 주어진 width (픽셀 단위)로 설정합니다.
선 너비가 0이면 장식용 펜을 의미합니다. 즉, 페인터의 transformation 설정과 관계없이 펜 너비는 항상 1픽셀로 그려집니다.
음수 값으로 펜 너비를 설정하는 것은 지원되지 않습니다.
setWidth() 및 widthF()도 참조하십시오 .
Qt::PenStyle QPen::style() const
펜 스타일을 반환합니다.
setStyle() 및 Pen Style도 참조하십시오 .
[noexcept] void QPen::swap(QPen &other)
이 펜을 other 로 교체합니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.
int QPen::width() const
펜 너비를 정수 정밀도로 반환합니다.
setWidth() 및 widthF()도 참조하십시오 .
qreal QPen::widthF() const
부동 소수점 정밀도로 펜 너비를 반환합니다.
setWidthF() 및 width()도 참조하십시오 .
QPen::operator QVariant() const
펜을 ` QVariant` 객체로 반환합니다.
bool QPen::operator!=(const QPen &pen) const
펜이 지정된 pen 와 다르면 true 를 반환하고, 그렇지 않으면 false를 반환합니다. 두 펜의 스타일, 두께 또는 색상이 다르면 서로 다른 것으로 간주됩니다.
operator==()도 참조하십시오 .
[noexcept] QPen &QPen::operator=(QPen &&other)
other 를 이 QPen 인스턴스에 할당합니다.
[noexcept] QPen &QPen::operator=(const QPen &pen)
지정된 ` pen `를 이 펜에 할당하고, 이 펜에 대한 참조를 반환합니다.
[since 6.9] QPen &QPen::operator=(QColor color)
이 펜을 지정된 색상과 기본 캡 및 연결 스타일로 설정하고, 이 펜에 대한 참조를 반환합니다.
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.9에서 도입되었습니다.
[since 6.9] QPen &QPen::operator=(Qt::PenStyle style)
이 펜을 기본 캡 및 연결 스타일을 가진 단색 검정색 펜으로 만들고, 이 펜에 대한 참조를 반환합니다.
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.9에서 도입되었습니다.
bool QPen::operator==(const QPen &pen) const
펜이 주어진 pen 와 같으면 true 를 반환하고, 그렇지 않으면 false를 반환합니다. 두 펜은 스타일, 너비, 색상이 모두 같을 때 서로 같다고 간주됩니다.
operator!=()도 참조하십시오 .
관련 비멤버
QDataStream &operator<<(QDataStream &stream, const QPen &pen)
지정된 ` pen `를 지정된 ` stream `에 기록하고, ` stream`에 대한 참조를 반환합니다.
Qt 데이터 유형 직렬화항목도 참조하십시오 .
QDataStream &operator>>(QDataStream &stream, QPen &pen)
지정된 ` stream `에서 펜을 읽어 지정된 ` pen `에 저장하고, ` stream`에 대한 참조를 반환합니다.
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.













