harsszegi
harsszegi

Reputation: 379

paintEvent is not called after an update() in mouseMoveEvent

I am using a QAbstractScrollArea and a custom QWidget derivative widget as "the" widget (having sizeHint() overriden).

The application needs to constantly update the QWidget content during mouseMove (kind of a drag, but not exactly, it is a drawing tool to draw lines between objects, thus the mouse cursor needs to change and the line needs to be drawn on the fly).

The application works fine, e.g., I can render the content properly, scrollbars visible, I can manually update the viewport during scrollContentsBy, etc.

However, regardless that I manually fire an update() (or repaint()) call in mouseMoveEvent, the paintEvent will only be called after the "drag" process is over, e.g., the mouseReleaseEvent is fired.

And I'm clueless why this happens. Obviously, if I do the update directly within the mouseMoveEvent, it'll be rejected by QPainter (as I can't instantiate a QPainter within the mouseMoveEvent — Qt drops "paintEngine should no longer be called" when trying to do that).

Upvotes: 1

Views: 1064

Answers (1)

harsszegi
harsszegi

Reputation: 379

Never mix update() with viewport()->update().

Upvotes: 2

Related Questions