[Interest] WA_NoSystemBackground vs WA_OpaquePaintEvent
Philippe
philwave at gmail.com
Thu Jan 22 09:18:49 CET 2015
The WA_OpaquePaintEvent meaning is pretty clear actually.
WA_NoSystemBackground is more subtle. As you said, when setting WA_OpaquePaintEvent, WA_NoSystemBackground
does not seem to be useful. But since this is not documented so, I
understand you prefer to set it anyway, together with WA_OpaquePaintEvent.
For a top level widget, with some transparency effects, WA_NoSystemBackground
makes sense (the Qt doc says it itself: setting WA_TranslucentBackground
auto-sets WA_NoSystemBackground).
But what I don't see is: is there any valid use of WA_NoSystemBackground
alone (without WA_OpaquePaintEvent), for a child widget?...
Philippe
On Thu, 22 Jan 2015 07:59:54 +0100
Bo Thorsen <bo at vikingsoft.eu> wrote:
> Hi Philippe,Den 21-01-2015 kl. 15:32 skrev Philippe:
> > The difference between these two modes is not obvious.
> > When should we use *WA_NoSystemBackground* instead of *WE_OpaquePaintEvent*,
> > and reciprocally?
> > When should we use both?
> > I could not get any clear hint while searching through the Qt source...
>
> WA_NoSystemBackground tells QWidget that it should not fill the window
> with the standard widget background. If this is not set, it's possible
> that the paint of a widget is opaque. Qt tries to figure this out
> automatically.
>
> WA_OpaquePaintEvent says to QWidget that you know for a fact that your
> painting of the window will fill up everything. The widget uses this
> knowledge to optimize out some of the things it does before calling the
> widget paintEvent (filling the background is one).
>
> WA_NoSystemBackground doesn't say that your painting of the widget will
> cover the widget completely. This allows you to do some extra
> transparency in your widgets or windows.
>
> If you have set WA_OpaquePaintEvent you don't really need
> WA_NoSystemBackground because the effect is covered. Or that is at least
> what it looks like when I look at the current sources. I normally set
> both anyway, as there might be some subtle difference in future versions.
>
> WA_OpaquePaintEvent is all about optimization. For a lot of custom
> widgets it's not really necessary to worry about them. Of course, we
> don't like to waste cpu cycles, but the painting system in Qt is so fast
> that if this is a small widget you are not going to see any difference.
> But if your painting of the widget does fill the entire widget, you
> should set this.
>
> WA_NoSystemBackground is not about optimization, it is a control you
> have to set whether Qt will paint something on the widget before your
> paintEvent is called.
>
> I hope this helps.
>
> Bo Thorsen,
> Director, Viking Software.
>
> --
> Viking Software
> Qt and C++ developers for hire
> http://www.vikingsoft.eu
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
More information about the Interest
mailing list