QPen Class

QPen 클래스는 QPainter 도형의 선과 윤곽을 그리는 방법을 정의합니다. 더 보기...

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

공용 함수

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)

자세한 설명

펜에는 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() 편의 기능을 제공하여 각각 펜의 브러시 색상을 추출하고 설정할 수 있습니다. 펜을 비교하고 스트리밍할 수도 있습니다.

일반적인 페인팅에 대한 자세한 내용은 페인트 시스템 문서를 참조하세요.

펜 스타일

Qt는 Qt::PenStyle 열거형에 의해 표현되는 몇 가지 내장 스타일을 제공합니다:

setStyle() 함수를 사용하여 펜 스타일을 곧 다시 설명할 Qt::CustomDashLine 스타일을 제외한 기본 제공 스타일 중 하나로 변환하기만 하면 됩니다. 스타일을 Qt::NoPen 으로 설정하면 선이나 윤곽선을 그리지 않도록 페인터에 지시합니다. 기본 펜 스타일은 Qt::SolidLine 입니다.

Qt 4.1부터는 setDashPattern() 함수를 사용하여 펜 스타일을 Qt::CustomDashLine 로 암시적으로 변환하는 사용자 지정 대시 패턴을 지정할 수도 있습니다. 패턴 인수인 QList 는 1, 3, 5... 항목이 대시이고 2, 4, 6... 항목이 공백인 짝수의 qreal 항목으로 지정해야 합니다. 예를 들어 위에 표시된 사용자 지정 패턴은 다음 코드를 사용하여 만듭니다:

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일 때 끝점이 그려지는지 여부는 캡 스타일에 따라 다릅니다. 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, 즉 픽셀 단위로 펜 너비의 두 배입니다.

경로 스트로킹 예제

경로 스트로킹 예제는 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, 펜 style, cap 스타일 및 join 스타일로 펜을 생성합니다.

setBrush(), setWidth(), setStyle(), setCapStyle() 및 setJoinStyle()도 참조하세요 .

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

주어진 pen 의 복사본인 펜을 생성합니다.

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

주어진 pen 에서 이동한 펜을 생성합니다.

이동된 펜은 할당, 복사 또는 소멸만 가능합니다. 할당하기 전에 다른 작업을 수행하면 정의되지 않은 동작이 발생합니다.

[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 을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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 의 값에 따라 이 펜을 코스메틱 또는 비코스메틱으로 설정합니다.

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... 항목이 공백인 짝수 양의 항목으로 지정해야 합니다. 예를 들면 다음과 같습니다:

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픽셀 길이). 너비가 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으로 재설정합니다.

style() 및 Pen Style참조하세요 .

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()도 참조하세요 .

QVariant QPen::operator QVariant() const

펜을 QVariant 로 반환합니다.

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

펜이 주어진 pen 과 다르면 true 을 반환하고, 그렇지 않으면 거짓을 반환합니다. 두 펜의 스타일, 너비 또는 색상이 다르면 서로 다른 펜입니다.

operator==()도 참조하세요 .

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

이동-이 other 인스턴스를 QPen 인스턴스에 할당합니다.

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

주어진 pen 을 이 펜에 할당하고 이 펜에 대한 참조를 반환합니다.

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 데이터형 직렬화도참조하십시오 .

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