Шаг 196.
Библиотека Qt.
Класс QPen

    На этом шаге рассмотрим класс QPen.

    Перья и кисти — это основа для программирования графики с использованием библиотеки Qt. Без них не получится вывести даже точку на экран.

    Перо применяется для рисования контурных линий фигуры. Атрибуты пера — цвет, толщина и стиль. Установить новое перо можно с помощью метода QPainter::setPen(), передав в него объект класса QPen. Можно передавать и предопределенные стили пера, указанные в табл. 1.

Таблица 1. Некоторые значения из перечисления PenStyle пространства имен Qt
Константа
Значение
Вид (толщина = 4)
NoPen
0
линии нет
SolidLine
1
DashLine
2
DotLine
3
DashDotLine
4
DashDotDotLine
5

    Толщина линии является значением целого типа, которое передается в метод QPen::setWidth(). Если значение равно нулю, то это не означает, что линия будет невидима, а говорит о том, что она должна быть изображена как можно тоньше.

    Если необходимо, чтобы линия не отображалась вообще, то тогда устанавливается стиль NoPen. Зачем же нужно перо, которое не рисует? Бывают и такие случаи, когда и пустое перо пригодится, например, когда нужно вывести четырехугольник определенного цвета без контурной линии.

    Цвет пера задается с помощью метода QPen::setColor(), в который передается объект класса QColor. Следующий пример создает перо красного цвета, толщиной в три пиксела и со стилем "штрих". Объект пера устанавливается в объекте QPainter вызовом метода setPen().

QPainter painter(this);
painter.setPen(QPen(Qt::red, 3, Qt::DashLine));

    Стили для концов линий пера устанавливаются методом setCapStyle(), в который передается один из флагов Qt::FlatCap (край линии квадратный и проходит через граничную точку), Qt::SquareCap (край квадратный и перекрывает граничную точку на половину ширины линии) или Qt::RoundCap (край закругленный и также покрывает граничную точку линии).


Рис.1. Стили окончания линий

    Можно устанавливать стили и для переходов одной линии в другую — методом setJoinStyle(), передав в него Qt::MiterJoin (линии продлеваются и соединяются под острым углом), Qt::BevelJoin (пространство между линиями заполняется) или Qt::RoundJoin (угол закругляется). Но эти переходы будут видны только на толстых линиях (рис. 1).


Рис.2. Стили соединения линий

    На следующем шаге рассмотрим кисть - класс QBrush.




Предыдущий шаг Содержание Следующий шаг