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 を使って描画できる線端のキャップを決定し、結合スタイルは、2つの線間の結合をどのように描画するかを記述します。ペン幅は、整数 (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 enum で表されるいくつかの組み込みスタイルを提供しています:

setStyle ()関数を使うだけで、ペンのスタイルを組み込みスタイルのいずれかに変換することができます。ただし、Qt::CustomDashLine スタイルについては後ほど説明します。スタイルをQt::NoPen に設定すると、ペインターは線や輪郭を描かないようになります。デフォルトのペンスタイルはQt::SolidLine です。

Qt 4.1 以降では、setDashPattern() 関数を使用して、カスタムのダッシュパターンを指定することも可能です。この関数は、ペンのスタイルを暗黙のうちにQt::CustomDashLine に変換します。パターンの引数であるQList は、偶数個の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 enum は以下のスタイルを提供します:

Qt::SquareCap スタイルは、終点を覆い、そこから線幅の半分だけはみ出す正方形の線端です。Qt::FlatCap スタイルは、終点を覆わない正方形の行末です。そしてQt::RoundCap スタイルは、終点を覆う丸みを帯びた線端です。

デフ ォル ト はQt::SquareCap です。

ペン幅が 0 か 1 のときに端点が描画されるかどうかは、キャップスタイルに依存します。Qt::SquareCap またはQt::RoundCap では描画され、Qt::FlatCap では描画されません。

結合ス タ イル

結合スタイルは、QPainter を使って、2 つの連結線間の結合をどのように描画するかを定義します。結合ス タ イルは幅の広い線にのみ、 すなわち幅が 1 以上の場合にのみ適用 さ れます。Qt::PenJoinStyle enum には以下のス タ イ ルがあ り ます:

Qt::BevelJoin ス タ イ ルは、 2 本の線の間の三角形の切 り 落 と し を塗 り ます。Qt::MiterJoin スタイルは、線が斜めに交わるように伸ばします。そして、Qt::RoundJoin スタイルは、2つの線の間の円弧を塗りつぶします。

デフォルトはQt::BevelJoin です。

Qt::MiterJoin スタイルが適用されている場合、setMiterLimit() 関数を使用して、マイター結合が結合点からどこまで伸びるかを指定することができます。miterLimit() は、 線が平行に近い場合に、 線の結合間のア ーテ ィ フ ァ ク ト を軽減す る ために用い ら れます。

miterLimit() はペンの幅単位で指定する必要があります。例えば、幅 10 のマイターリミット 5 は 50 ピクセルの長さになります。デフ ォル ト のマ イ タ リ ミ ッ ト は 2 で、 すなわちペ ン幅の 2 倍 (ピ ク セル単位) です。

パス描画の例

パス描画の例では、Qt 組み込みのダッシュパターンを示し、利用可能なパターンの範囲を拡張するためにカスタムパターンをどのように使用できるかを示しています。

QPainter,QBrush,Path Stroking Example,Scribble Exampleも参照してください

メンバ関数ドキュメント

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, penstyle,cap style およびjoin style を持つペンを構築します。

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 に適用される変換に関係なく、一定の幅を持つストロークを描画するために使用されます。コスメティックペンで図形を描画すると、その輪郭は、異なるスケールファクターでも同じ太さになります。

幅ゼロのペンはデフォルトで化粧ペンです。

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 の値によって、このペンを化粧ペンまたは非化粧ペンに設定します。

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 に設定 さ れてい る と き にのみ効力を持ち ます。 こ の値はペ ンの幅を単位 と し て指定 さ れます。デフォルトのマイターリミットは2、つまりピクセル単位のペン幅の2倍です。

miterLimit(),setJoinStyle(),Join Styleも参照

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

ペンのスタイルを指定されたstyle に設定します。

利用可能なスタイルの一覧はQt::PenStyle のドキュメントを参照してください。Qt 4.1 以降では、setDashPattern() 関数を使用してカスタム・ダッシュ・パターンを指定することも可能です。この関数は、ペンのスタイルを暗黙のうちにQt::CustomDashLine に変換します。

注意: この関数はダッシュオフセットをゼロにリセットします。

style() およびPen Styleも参照

void QPen::setWidth(int width)

ペン幅を、整数精度でピクセル単位で与えられたwidth に設定する。

線幅ゼロは、化粧ペンを示す。これは、ペインタに設定されたtransformation とは無関係に、ペン幅が常に1ピクセル幅で描画されることを意味します。

ペン幅を負の値で設定することはサポートされていません。

setWidthF() およびwidth()も参照して ください。

void QPen::setWidthF(qreal width)

ペン幅を、浮動小数点精度でピクセル単位で与えられたwidth に設定します。

線幅ゼロは、化粧ペンを示します。これは、ペインター上の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 を返し、そうでない場合は false を返します。2つのペンが異なるスタイル、幅、色を持っている場合、2つのペンは異なります。

operator==()も参照してください

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

Move-other をこのQPen インスタンスに割り当てます。

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

与えられたpen をこのペンに割り当て、このペンへの参照を返す。

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

ペンが与えられたpen と等しい場合はtrue を返し、そうでない場合は false を返します。2つのペンのスタイル、幅、色が等しい場合は等しい。

operator!=()も参照してください

関連する非会員

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

与えられたpen を与えられたstream に書き込み、stream への参照を返します。

Qt データ型のシリアライズも参照して ください。

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

与えられたstream から与えられたpen にペンを読み込み、stream への参照を返します。

Qt データ型のシリアライズ」も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。