Qt World Summit: Submit your Presentation

"Rendering" QGraphicsDropShadowEffect in another thread ?

  • Hey, is it possible getting a QGraphicsDropShadowEffect "rendered" in another thread than e.g. QGraphicsWidget?

    I have a QGraphicsWidget (within a "container" QGraphicsWidget with QGraphicsLinearLayout) streched 100% of the view's width, but when I resize the view (and therefore also the "container's" gemoetry => also the main QGraphicsWidget's geometry which the effect is enabled on) it takes a lot of time and it looks a bit "shaky"

    But I have absolutely no idea how I should do it with the two threads ...

    Hope someones have an idea =)

  • All GUI elements have to be handled solely the main thread. It's a hard and fast rule.

  • So I'll always have this kind of delay when I resize the window?

    Is it possible to disable the effect when I begin resizing the window and reactivate the effect when the resizing is done? (Is there a event-handler for this?)

  • The sad truth is that the whole graphics effects stuff is simply broken in Qt4. You need OpenGL and shaders to properly do a drop shadow in real time. Try to cheat as much as you can, for instance replace the effect with some kind of semi-transparent image while you're resizing, then set the effect back.

  • Is there any tutorial for a drop-shadow with OpenGL and shaders?

    (I've never done some opengl stuff :D)

Log in to reply