Виджеты можно нарисовать только в соответствующем событии рисования. Вы можете нарисовать пиксельную карту в любой функции, но вам нужно показать результат в событии рисования виджета.
Из документа doc:
Warning: Когда устройство рисования виджет, QPainter может использоваться только внутри функции paintEvent () или в функции, вызванной paintEvent (); то есть, если не установлен атрибут виджета Qt :: WA_PaintOutsidePaintEvent.
blockquote>