You should override paintEvent() and put your drawing code in there. If you need to paint at some arbitrary point in time, and not rely on the more asynchronous nature of QWidget::update(), you can call QWidget::repaint() (choose a reasonable version to avoid repainting the entire window). It sends a paint event to the widget synchronously.