Spec-Zone.ru › Qt 5.15

Класс QPen

Класс QPen определяет, как QPainter должен рисовать линии и контуры фигур. Подробнее...

Заголовок: #include <QPen>
qmake: QT += gui
  • Список всех членов, включая унаследованные

Открытые функции

QPen(QPen &&pen)
QPen(const QPen &pen)
QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
QPen(const QColor &color)
QPen(Qt::PenStyle style)
QPen()
QPen & operator=(QPen &&other)
QPen & operator=(const QPen &pen)
~QPen()
QBrush brush() const
Qt::PenCapStyle capStyle() const
QColor color() const
qreal dashOffset() const
QVector<qreal> dashPattern() const
bool isCosmetic() const
bool isSolid() const
Qt::PenJoinStyle joinStyle() const
qreal miterLimit() const
void setBrush(const QBrush &brush)

Связанные нечлены

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

Подробное описание

У пера есть стиль(), ширина(), кисть(), стиль_конца_линии() и стиль_соединения().

Стиль пера определяет тип линии. Кисть используется для заполнения штрихов, созданных пером. Используйте класс QBrush для указания стилей заполнения. Стиль окончания определяет концы линий, которые могут быть нарисованы с помощью QPainter, в то время как стиль соединения описывает, как соединяются две линии.

Ширина пера может быть задана с целочисленной (width() ) и с плавающей точкой (widthF() ) точностью. Ширина линии 0 указывает на косметическое перо. Это означает, что ширина пера всегда рисуется шириной в один пиксель, независимо от преобразования, установленного в отрисовщике.

Различные настройки легко можно изменить, используя соответствующие функции 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) и стилем соединения bevel (Qt::BevelJoin).

Кроме того, QPen предоставляет удобные функции color() и setColor() для извлечения и установки цвета кисти пера соответственно. Перья также можно сравнивать и передавать в поток.

Для получения дополнительной информации об отрисовке в целом см. документацию Системы отрисовки.

Стиль пера

Qt предоставляет несколько встроенных стилей, представленных перечислением Qt::PenStyle:

Просто используйте функцию setStyle(), чтобы преобразовать стиль пера в любой из встроенных стилей, за исключением стиля Qt::CustomDashLine, к которому мы вернемся чуть позже. Установка стиля на Qt::NoPen сообщает отрисовщику, что не нужно рисовать линии или контуры. По умолчанию стиль пера — Qt::SolidLine.

Начиная с Qt 4.1, также можно указать пользовательский шаблон пунктирной линии с помощью функции setDashPattern(), которая неявно преобразует стиль пера в Qt::CustomDashLine. Аргумент pattern, QVector, должен быть указан как четное количество значений типа qreal, где значения 1, 3, 5... — это штрихи, а 2, 4, 6... — пробелы. Например, пользовательский шаблон, показанный выше, создается с помощью следующего кода:

QPen pen;
QVector<qreal> dashes;
qreal space = 4;

dashes << 1 << space << 3 << space << 9 << space
           << 27 << space << 9 << space;

pen.setDashPattern(dashes);

Обратите внимание, что шаблон пунктирной линии указан в единицах ширины пера, т. е. штрих длиной 5 при ширине 10 составляет 50 пикселей.

Текущий шаблон пунктирной линии можно получить с помощью функции dashPattern(). Используйте функцию isSolid(), чтобы определить, имеет ли перо сплошной заполнение или нет.

Стиль окончания

Стиль окончания линии определяет, как рисуются конечные точки линий с помощью QPainter. Стиль окончания линии применяется только к линиям с шириной 1 или больше. Перечисление Qt::PenCapStyle предоставляет следующие стили:

Qt::SquareCap Qt::FlatCap Qt::RoundCap

Стиль 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 продолжит линии до пересечения под углом. А стиль Qt::RoundJoin заполняет дугой окружности между двумя линиями.

По умолчанию используется Qt::BevelJoin.

При применении стиля Qt::MiterJoin можно использовать функцию setMiterLimit(), чтобы указать, насколько далеко соединение митёр может выходить за точку соединения. miterLimit() используется для уменьшения артефактов между соединениями линий, когда линии близки к параллельным.

miterLimit() необходимо указывать в единицах ширины пера, например, предел митёра 5 при ширине 10 равен 50 пикселям. По умолчанию предел митёра равен 2, то есть в два раза больше ширины пера в пикселях.

Пример рисования контуров

Пример рисования контуров демонстрирует встроенные шаблоны пунктира Qt и показывает, как можно использовать пользовательские шаблоны для расширения диапазона доступных шаблонов.

См. также QPainter, QBrush, Пример рисования контуров и Пример рисования.

Документация по функциям-членам

QPen::QPen(QPen &&pen)

Создаёт перо, перемещая данные из переданного pen.

Перо, из которого данные были перемещены, может быть только назначено, скопировано или уничтожено. Любая другая операция (до присваивания) приведёт к неопределённому поведению.

Эта функция была добавлена в Qt 5.4.

QPen::QPen(const QPen &pen)

Создаёт перо, являющееся копией переданного pen.

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().

QPen::QPen(const QColor &color)

Создаёт перо с твёрдой линией, шириной 1 и заданным color.

См. также setBrush() и setColor().

QPen::QPen(Qt::PenStyle style)

Создаёт черное перо с шириной 1 и заданным style.

См. также setStyle().

QPen::QPen()

Создаёт перо по умолчанию — черное, твёрдой линией, шириной 1.

QPen &QPen::operator=(QPen &&other)

Перемещает присваивание other экземпляру QPen.

Эта функция была добавлена в Qt 5.2.

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

Присваивает переданное pen этому перу и возвращает ссылку на это перо.

QPen::~QPen()

Удаляет перо.

QBrush QPen::brush() const

Возвращает кисть, используемую для заполнения штрихов, созданных этим пером.

См. также setBrush().

Qt::PenCapStyle QPen::capStyle() const

Возвращает стиль окончания пера.

См. также setCapStyle() и Стиль окончания.

QColor QPen::color() const

Возвращает цвет кисти этого пера.

См. также brush() и setColor().

qreal QPen::dashOffset() const

Возвращает смещение пунктира для пера.

См. также setDashOffset().

QVector<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() и Стиль соединения.

qreal QPen::miterLimit() const

Возвращает предел митёра пера. Предел митёра имеет значение только тогда, когда стиль соединения установлен в Qt::MiterJoin.

См. также setMiterLimit() и Стиль соединения.

void QPen::setBrush(const QBrush &brush)

Устанавливает кисть, используемую для заполнения штрихов, созданных этим пером, на переданную brush.

См. также brush() и setColor().

void QPen::setCapStyle(Qt::PenCapStyle style)

Устанавливает стиль окончания пера на заданный style. Значение по умолчанию — Qt::SquareCap.

См. также capStyle() и Стиль окончания.

void QPen::setColor(const QColor &color)

Устанавливает цвет кисти этого пера на переданный color.

См. также setBrush() и color().

void QPen::setCosmetic(bool cosmetic)

Устанавливает перо как косметическое или нет, в зависимости от значения cosmetic.

См. также isCosmetic().

void QPen::setDashOffset(qreal offset)

Устанавливает смещение штриховки (начальную точку на узоре штриховки) для этого пера в указанное значение offset. Смещение измеряется в единицах, используемых для задания узора штриховки.

Например, узор, где каждый штрих имеет длину четыре единицы, за которой следует пробел в две единицы, при рисовании линии начнется с штриха.

Однако, если смещение штриховки установлено в 4.0, любая нарисованная линия начнется с пробела. Значения смещения до 4.0 приведут к тому, что сначала будет нарисована часть штриха, а значения смещения от 4.0 до 6.0 приведут к тому, что линия начнется с части пробела.

Примечание: Это неявным образом преобразует стиль пера в Qt::CustomDashLine.

См. также dashOffset().

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

Устанавливает узор штриховки для этого пера в заданный pattern. Это неявным образом преобразует стиль пера в Qt::CustomDashLine.

Узор должен быть задан как чётное число положительных элементов, где элементы 1, 3, 5... — это штрихи, а 2, 4, 6... — пробелы. Например:

QPen pen;
QVector<qreal> dashes;
qreal space = 4;
dashes << 1 << space << 3 << space << 9 << space
           << 27 << space << 9 << space;
pen.setDashPattern(dashes);

Узор штриховки задаётся в единицах ширины пера; например, штрих длиной 5 при ширине пера 10 имеет длину 50 пикселей. Обратите внимание, что перо с нулевой шириной эквивалентно декоративному перу с шириной 1 пиксель.

Каждый штрих также зависит от стиля закрашивания концов, поэтому штрих длиной 1 с квадратным закрашиванием концов будет расширяться на 0,5 пикселя в каждом направлении, что приведёт к общей ширине 2.

Обратите внимание, что по умолчанию стиль закрашивания концов — Qt::SquareCap, что означает, что квадратный конец линии покрывает конечную точку и выходит за неё на половину ширины линии.

См. также setStyle(), dashPattern(), setCapStyle() и setCosmetic().

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

Устанавливает стиль соединения пера в заданный style. Значение по умолчанию — Qt::BevelJoin.

См. также joinStyle() и Стиль соединения.

void QPen::setMiterLimit(qreal limit)

Устанавливает предел скругления для этого пера в заданное значение limit.

Предел скругления определяет, насколько далеко скругление может выходить за точку соединения. Это используется для уменьшения артефактов между соединениями линий, когда линии близки к параллельности.

Это значение имеет эффект только при установке стиля пера в Qt::MiterJoin. Значение задаётся в единицах ширины пера, например, предел скругления 5 при ширине пера 10 составляет 50 пикселей. По умолчанию предел скругления равен 2, то есть в два раза больше ширины пера в пикселях.

См. также miterLimit(), setJoinStyle() и Стиль соединения.

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

Устанавливает стиль пера в заданный style.

Список доступных стилей см. в документации Qt::PenStyle. Начиная с Qt 4.1, можно также указать пользовательский узор штриховки с помощью функции setDashPattern(), которая неявным образом преобразует стиль пера в Qt::CustomDashLine.

Примечание: Эта функция сбрасывает смещение штриховки до нуля.

См. также style() и Стиль пера.

void QPen::setWidth(int width)

Устанавливает ширину пера в заданное значение width в пикселях с целочисленной точностью.

Ширина линии равна нулю указывает на декоративное перо. Это означает, что ширина пера всегда рисуется шириной в один пиксель, независимо от преобразования, заданного в рисовальщике.

Установка ширины пера с отрицательным значением не поддерживается.

См. также setWidthF() и width().

void QPen::setWidthF(qreal width)

Устанавливает ширину пера в заданное значение width в пикселях с плавающей точкой.

Ширина линии равна нулю указывает на декоративное перо. Это означает, что ширина пера всегда рисуется шириной в один пиксель, независимо от преобразования в рисовальщике.

Установка ширины пера с отрицательным значением не поддерживается.

См. также setWidth() и widthF().

Qt::PenStyle QPen::style() const

Возвращает стиль пера.

См. также setStyle() и Стиль пера.

void QPen::swap(QPen &other)

Меняет местами перо other с этим пером. Эта операция очень быстрая и никогда не терпит неудачу.

Эта функция была добавлена в Qt 4.8.

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

Возвращает true если перо отличается от заданного пера pen; в противном случае возвращает false. Два пера отличаются, если у них разные стили, ширины или цвета.

См. также operator==().

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

Возвращает true если перо равно заданному перу pen; в противном случае возвращает false. Два пера равны, если у них одинаковые стили, ширины и цвета.

См. также operator!=().

Связанные нечлен-функции

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

Записывает заданное pen в заданный stream и возвращает ссылку на stream.

См. также Сериализация типов данных Qt.

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

Читает перо из заданного stream в заданное pen и возвращает ссылку на stream.

См. также Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qpen.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API