Sunday, August 16, 2009

Trobadour knowledge about QGraphicsScene

If you do not want your QGraphicsView to repaint itself totally do not delete QGraphicsItems without removing them from the QGraphicsScene first.

6 comments:

  1. I think that I got my project error...
    why I haven't guessed it before ?

    ReplyDelete
  2. Someone better tell the WorldClock guys because it still locks Plasma hard at 100%.

    ReplyDelete
  3. shouldn't this be the standard behaviour anyway?
    first remove, then delete
    or move + change settings (to reuse the object)
    at least i designed it that way for a qt project some time ago

    ReplyDelete
  4. @James: Having a quick look at worldclock plasmoid i think the reason for it's slowness is a different one

    @anon: Why so i have to remove it before deleting? I mean in the developer mind it's "Ok, i don't need this item anymore, so let's delete it", and the thing is that it works, just it's much slower and i sincerely don't see a reason for that.

    ReplyDelete
  5. The reason is that in the ~QGraphicsViewItem, the virtuals functions such as the boundingRect are not avaliable anymore.
    So the graphics view doesn't know what to update and then has to update everything.

    ReplyDelete
  6. @Albert Astals Cid
    well in real live when someone dies you also have to notify the parents (when they still live) and remove the person out of the registers, don't you?

    ReplyDelete