Рисовать с помощью QPainter

Мне нужно рисовать с QPainter, но когда я пытаюсь сделать это не в

void paintEvent( QPaintEvent* )

Я ловлю ошибку:

QPainter:: setPen: Painter не активен

QPainter::setBrush: Painter не активен

Могу ли я использовать QPainter не в пустоте paintEvent( QPaintEvent* )?

Спасибо.

1 ответ

Решение

Вы используете виджет в качестве устройства рисования для QPainter, В этом случае, QPainter обычно может использоваться только в контексте события рисования виджета. QPainter Документация может сказать об этом следующее:

Предупреждение: когда paintdevice является виджетом, QPainter может использоваться только внутри функции paintEvent() или в функции, вызываемой paintEvent(); это если только не установлен атрибут виджета Qt::WA_PaintOutsidePaintEvent. В Mac OS X и Windows вы можете рисовать только в функции paintEvent() независимо от настройки этого атрибута.

Можно использовать QPainter вне события рисования, установив другое устройство рисования для QPainterнапример QPixmap,

Другие вопросы по тегам