Обработчик paintEvent. Рисование при помощи QPainter

Метод paintEvent для виджетов является обработчиком для события типа "перерисовка виджета". Этот метод вызывается при создании виджета, а также при необходимости его перерисовать, например, в результате изменения размеров виджета.

Это событие можно также создать принудительно, если вызвать для объекта класса метод repaint().

Возможный вид метода paintEvent:

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawLine(0, 0, width() - 1, height() - 1);
    painter.drawLine(0, height() - 1, width() - 1, 0);
}

В этом примере рисование производится при помощи объекта QPainter. Этот объект позволяет рисовать графические примитивы - отрезки, окружности и эллипсы, прямоугольники и т.д.

В начале создается объект класса QPainter, привязанный к виджету. Затем используя методы рисования QPainter на этом объекте можно рисовать примитивы. Список возможных методов рисования можно найти в документации на QPainter.

Например:

drawLine - нарисовать линию.

drawEllipse - нарисовать эллипс или окружность.

drawRect - нарисовать прямоугольник.

drawPolygon - нарисовать многоугольник.

Чтобы узнать текущие размеры виджета используются методы width() и height().

При рисовании можно задать параметры пера (Pen) и кисти (Brush). Pen определяет стиль рисуемых линий, окружностей, границ прямоугольника. Brush определяет тип внутренней заливки объектов.

Для установки пера используется метод setPen, которому в качестве параметра необходимо передать объект класса QPen. Примеры использования можно найти в документации.

Для установки кисти используется метод setBrush и параметр класса QBrush.