На этом шаге рассмотрим класс QPen.
Перья и кисти — это основа для программирования графики с использованием библиотеки Qt. Без них не получится вывести даже точку на экран.
Перо применяется для рисования контурных линий фигуры. Атрибуты пера — цвет, толщина и стиль. Установить новое перо можно с помощью метода QPainter::setPen(), передав в него объект класса QPen. Можно передавать и предопределенные стили пера, указанные в табл. 1.
Толщина линии является значением целого типа, которое передается в метод 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.